2016-11-10 40 views
1

我在Xamarin.iOS工作,我有UIToolbar需要能夠在運行時以編程方式添加和刪除按鈕。如何添加/刪除UIBoolButtonItem到/從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(); 



    } 
} 
+0

謝謝@Yuri S,這是我尋找的答案!將設置代碼移出LayoutSubviews()並將其放入構造函數中的確有訣竅! – kformeck

相關問題