Как добавить / удалить 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();
}
}