2012-02-09 22 views
1

我在我的項目中有Storyboard。我使用[UIBarButtonItem setCustomView:]方法來自定義工具欄按鈕。例如:爲什麼[UIBarButtonItem setCustomView:]方法在Storyboard中禁用了segue?

[self setCustomView:[[UIImageView alloc] initWithImage:image]]; 

現在他們看起來是我需要的。但我發現這種方法以某種方式禁用了我爲這個工具欄項目設置的segue。我的意思是,segue沒有它,但是當我嘗試使用這種方法進行定製時,segue不起作用。但爲什麼?

我不想使用代碼中的目標動作模式,我相信只能使用Storyboard。

回答

1

我試過你已經做了相同的結果 - 圖片是正確的,但UIBarButtonItem沒有反應時按下。可能這是一個錯誤。我的工作如下:

要在故事板中執行此操作,請將UIButton添加到工具欄中。您應該看到故事板通過將UIButton放入UIBarButton中來添加它。在UIButton上添加segue。在故事板中自定義UIButton。在我的應用程序中,我將大小設置爲40 x 40.然後在您的代碼中使用視圖定製UIButton。下面是代碼的一個例子的的ImageView添加到的UIButton:

[sampleImageView setFrame:CGRectMake(0, 0, 40, 40)]; 
[swapButton addSubview:sampleImageView]; 

注:故事板可以是離奇有關添加UIButtons到工具欄。看起來好像你在一個綁定到導航控制器的工具欄中執行它,它不會讓你添加它。我已經解決了這個問題,在故事板中添加了一個虛擬視圖控制器,添加了一個工具欄,然後將UIButton拖到該工具欄中。故事板將通過將UIButton封裝在UIButtonBarItem中來爲您創建。然後,您可以複製到項目中所需的工具欄並刪除虛擬視圖控制器。

還有其他方法可以做到這一點,例如在代碼中創建按鈕並將其添加到工具欄。上面的方法使代碼最小化。

+0

嗯... UIBarButton?可能是UIBarButtonItem。但它具有customView屬性。我不能把UIButton放入Storyboard中的UIBarButtonItem中。你能解釋一下你的意思嗎? – Lloyd18 2012-02-10 05:44:57

+0

@ Lloyd18我對UIBArButtonItem進行了擴展更正。我更詳細地更新了我的答案。 – 2012-02-10 15:22:58

2

我一直在嘗試配置故事板中的所有segues,但我需要爲rightBarButtonItem創建一個自定義視圖。爲了確保SEGUE仍然有效,只需設置customView前加入這一行:

[filterButton addTarget:self.navigationItem.rightBarButtonItem.target action:self.navigationItem.rightBarButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 

這樣,你在你的故事板設立塞格斯仍會觸發與customViews。

我的整個自定義按鈕的代碼如下所示:

UIButton *filterButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[filterButton setImage:[UIImage imageNamed:@"filter"] forState:UIControlStateNormal]; 
[filterButton setFrame:CGRectMake(0, 0, 36, 36)]; 
[filterButton addTarget:self.navigationItem.rightBarButtonItem.target action:self.navigationItem.rightBarButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.rightBarButtonItem.customView = filterButton; 
相關問題