Как добавить / удалить UIBarButtonItem в / из UIToolbar после того, как элементы уже добавлены?

Я работаю в Xamarin.iOS, и у меня есть UIToolbar, который должен иметь возможность добавлять и удалять кнопки из него программно во время выполнения.

Я пробовал несколько разных подходов, используя: _buttons является UIBarButtonItem[]

SetItems(_buttons, false)

и панель инструментов никогда не обновляется.

Я инициализирую панель инструментов, когда приложение запускается с тремя основными кнопками. Когда происходят определенные вещи, мне нужно иметь возможность удалять кнопки с панели инструментов, а также добавлять новые элементы на панель инструментов.

Я также попытался позвонить:

SetNeedsDisplay()

после звонка:

SetItems(_buttons, false)

и это не обновляет элементы панели инструментов.

Какие-либо предложения?

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



    }
}
Другие вопросы по тегам