如何在项目已经添加后 Add/Remove 一个 UIBarButtonItem to/from 一个 UIToolbar?
How Do I Add/Remove a UIBarButtonItem to/from a UIToolbar After Items Have Already Been Added?
我在 Xamarin.iOS 工作,我的 UIToolbar 需要能够在 运行-time 以编程方式添加和删除按钮。
我尝试了几种不同的方法:_buttons 是一个 UIBarButtonItem[]
SetItems(_buttons, false)
而且工具栏似乎永远不会更新。
我在应用程序启动时使用其主要的三个按钮初始化工具栏。当某些事情发生时,我需要能够从工具栏中删除按钮以及向工具栏添加新项目。
我也试过打电话:
SetNeedsDisplay()
调用后:
SetItems(_buttons, false)
这也不会更新工具栏项目。
有什么建议吗?
它没有改变的原因是 LayoutSubviews 一直被调用并覆盖您的 SetItems。第一次使用构造函数填充工具栏
public partial class CustomUiToolbar : UIToolbar
{
public CustomUiToolbar (IntPtr handle) : base (handle)
{
var _UIBarButtonItemArrayOne = new UIBarButtonItem[3];
for (int i = 0; i < 3; i++)
{
var _item = new UIBarButtonItem(i.ToString(), UIBarButtonItemStyle.Done, null);
_item.TintColor = UIColor.Red;
_UIBarButtonItemArrayOne[i] = _item;
}
//var __UIBarButtonItemArrayTwo = new UIBarButtonItem[2];
//for (int i = 0; i < 2; i++)
//{
// var _item = new UIBarButtonItem(i.ToString(), UIBarButtonItemStyle.Done, null);
// _item.TintColor = UIColor.Blue;
// __UIBarButtonItemArrayTwo[i] = _item;
//}
SetItems(_UIBarButtonItemArrayOne, true);
}
public override void LayoutSubviews()
{
base.LayoutSubviews();
}
}
我在 Xamarin.iOS 工作,我的 UIToolbar 需要能够在 运行-time 以编程方式添加和删除按钮。
我尝试了几种不同的方法:_buttons 是一个 UIBarButtonItem[]
SetItems(_buttons, false)
而且工具栏似乎永远不会更新。
我在应用程序启动时使用其主要的三个按钮初始化工具栏。当某些事情发生时,我需要能够从工具栏中删除按钮以及向工具栏添加新项目。
我也试过打电话:
SetNeedsDisplay()
调用后:
SetItems(_buttons, false)
这也不会更新工具栏项目。
有什么建议吗?
它没有改变的原因是 LayoutSubviews 一直被调用并覆盖您的 SetItems。第一次使用构造函数填充工具栏
public partial class CustomUiToolbar : UIToolbar
{
public CustomUiToolbar (IntPtr handle) : base (handle)
{
var _UIBarButtonItemArrayOne = new UIBarButtonItem[3];
for (int i = 0; i < 3; i++)
{
var _item = new UIBarButtonItem(i.ToString(), UIBarButtonItemStyle.Done, null);
_item.TintColor = UIColor.Red;
_UIBarButtonItemArrayOne[i] = _item;
}
//var __UIBarButtonItemArrayTwo = new UIBarButtonItem[2];
//for (int i = 0; i < 2; i++)
//{
// var _item = new UIBarButtonItem(i.ToString(), UIBarButtonItemStyle.Done, null);
// _item.TintColor = UIColor.Blue;
// __UIBarButtonItemArrayTwo[i] = _item;
//}
SetItems(_UIBarButtonItemArrayOne, true);
}
public override void LayoutSubviews()
{
base.LayoutSubviews();
}
}