如何添加项目后,如何在UIToolbar中添加/删除UIBarButtonItem?

时间:2016-11-10 17:54:33

标签: c# ios user-interface xamarin toolbar

我在Xamarin.iOS工作,我有UIToolbar,需要能够在运行时以编程方式添加和删除按钮。

我尝试了几种不同的方法:_buttons是一个UIBarButtonItem []

SetItems(_buttons, false)

并且工具栏似乎永远不会更新。

当应用程序启动时,我使用主要的三个按钮初始化工具栏。当某些事情发生时,我需要能够从工具栏中删除按钮以及将新项目添加到工具栏。

我也试过打电话:

SetNeedsDisplay()

致电后:

SetItems(_buttons, false)

,这也不会更新工具栏项。

有什么建议吗?

1 个答案:

答案 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();



    }
}