我在Xamarin.iOS工作,我有UIToolbar,需要能够在运行时以编程方式添加和删除按钮。
我尝试了几种不同的方法:_buttons是一个UIBarButtonItem []
SetItems(_buttons, false)
并且工具栏似乎永远不会更新。
当应用程序启动时,我使用主要的三个按钮初始化工具栏。当某些事情发生时,我需要能够从工具栏中删除按钮以及将新项目添加到工具栏。
我也试过打电话:
SetNeedsDisplay()
致电后:
SetItems(_buttons, false)
,这也不会更新工具栏项。
有什么建议吗?
答案 0 :(得分:1)
之所以没有改变,是因为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();
}
}