2013-07-18 52 views
7

我喜歡將獨立Xib文件創建爲獨立Xib文件,然後實例化它們並添加爲子視圖。使用UINavigationBar和UIBarButtonItem自動佈局

因此,當與UINavigationBar的工作,我希望能夠做同樣的事情,首先要創建我的自定義視圖 - 從廈門國際銀行 - 然後將其添加爲自定義視圖到UIBarButtonItem

UIBarButtonItem *anItem = [[UIBarButtonItem alloc] initWithCustomView:_myCustomView]; 

然後添加到導航欄:

self.navigationBar.topItem.rightBarButtonItems = @[ anItem, anotherItem ]; 

到目前爲止好。

現在,_myCustomView使用自動佈局(AL),我認爲這將是沒有問題的。 並非如此。我已經試過一切。沒有任何工作。我甚至嘗試添加自定義視圖作爲具有導航欄的控制器的子視圖。認爲作爲視圖層級中的兄弟姐妹,AL會將其視爲UINavigationBar以外的常規視圖。

這也沒有工作。控制器的updateViewConstraints已被調用,但從未應用。該視圖的初始框架保持在CGRectZero。就好像AL認爲這個視圖位於UINavigationBar之上,即使是兄弟姐妹,也決定它不需要鋪設。

當然,我試過bringSubviewToFront,translatesAutoresizingMaskIntoConstraintstranslatesAutoresizingMaskIntoConstraints等等。後者給了可愛:

終止應用程序由於未捕獲的異常 「NSInternalInconsistencyException」,理由是:「自動佈局執行-layoutSubviews後仍然需要 。 MyNavigationBar的 -layoutSubviews的實現需要調用超級。

所以,問題是,有沒有人從廈門國際銀行加載AL自定義視圖,併成功地將此作爲一個UIBarButtonItem一個customView?如果是這樣,怎麼樣?

+0

我還沒有爲它提交過雷達,但我也遇到過這個問題,它似乎是iOS 6的一個bug。以編程方式創建UIBarButtonItem及其視圖表現出同樣的問題。 – Ryan

+0

您是否找到解決此問題的解決方案? – Redwarp

+0

關於該主題的任何新聞?我認爲在iOS 7中我仍然有類似的問題(儘管有工具欄)。 –

回答

1

貌似的iOS Autolayout and UIToolbar/UIBarButtonItems

UIBarButtonItems重複不從UIView繼承,所以使用基於自動佈局自定義視圖中他們可能不完全支持。聽起來像你必須做前自動佈局的事情,直到問題解決。我會建議提交一個錯誤。

編輯:通過預自動佈局的事情,我的意思是操縱你的意見的框架直接。