2012-11-28 60 views
2

我有3個按鈕,我想添加爲自定義標題,一些在我的應用程序的意見。將它們添加到故事板中工作得很好,我可以將它們連接到視圖控制器中的方法。添加自定義的UIView到UINavigationItem

我最近想這些按鈕添加到一些其他的網頁,並希望抽象出來到在不同的頁面可能被重新使用的控制。我已經安裝了它,但是使用普通方法添加它很困難。

Maybe this picture will help explain what I'm talking about

通常我添加視圖控制器作爲子視圖控制器,然後添加視圖作爲一個子視圖,在這種情況下,我將它添加到一個佔位符,我在故事板,代碼如下所示這樣的:

// Setup Header 
HeaderViewController * headerViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"HeaderViewController"]; 
[headerViewController.view setFrame:CGRectMake(0.0f, 0.0f, [headerViewController.view frame].size.width, [headerViewController.view frame].size.width)]; 
[_headerView addSubview:headerViewController.view]; 

這讓我有尋找正確的但是當我點擊一個按鈕,它崩潰,因爲它不能找到具有與按鈕點擊相關的IBActions視圖控制器的看法。通常我會添加以下代碼,它會被照顧:

[self addChildViewController:headerViewController]; 

在這種情況下,但是我得到一個錯誤,指出:

終止應用程序由於未捕獲的異常「UIViewControllerHierarchyInconsistency」,原因是:「孩子視圖控制器:應該有父視圖控制器:但實際的父級是:'

我明白這意味着它認爲自定義標題視圖控制器的父級應該是導航控制器,將其設置爲導航控制器的子級不會也不行。它將標題視圖添加到正在顯示的PageViewControllers視圖的頂部。我可能失去了一些東西簡單

一些,我試過工作在模擬器上,但沒有他們的設備上運行,所以如果你玩的類似配置的組合的一定要看看它的設備如果它似乎在模擬器中工作。

任何想法或可以提供什麼樣的信息等信息,幫助嗎?

回答

0

我無法得到這個使用其他方法工作的建議,不是說他們錯了,我只是不能讓他們去工作。

我結束了創建一個相應的廈門國際銀行一UIView子類,並把IBActions到UIView子類。這需要一個到保持視圖控制器的薄弱環節,以便爲觸發的IBAction適當地顯示模態視圖。的用於移動的原因

2

把標題視圖控制器上的IBActions代替,並在廈門國際銀行約束他們沒有引用任何其他視圖控制器。

然後,在標題視圖控制器,你可以將它們傳遞到它的父。這樣就決定了誰在運行時接收動作,而不是作爲xib的一部分。

- (IBAction)button1Pressed { 
    if ([self.parentViewController respondsToSelector:@selector(button1Pressed)]) 
     [self.parentViewController performSelector(button1Pressed)]; 
    else 
     NSLog(@"Parent doesn't care about button 1 : %@", self.parentViewController); 
} 

您還可以查看是否家長可以響應或不:)

+0

部分是隔離與按鈕相關聯的IBAction爲代碼,它們顯示模態的視圖的大部分。該IBAction爲代碼已經包含在HeaderViewController,我想我不是很理解您的解決方案是如何工作的。你能澄清嗎? – mwright

+0

如果您的標題視圖控制器的IBActions已經連接到按鈕的事件,那麼我不明白爲什麼它會嘗試調用其他視圖控制器上的方法?你可以添加崩潰日誌到你的問題,所以我們可以看到你的意思? – deanWombourne

+0

感謝您的迴應,它有助於獲得答案,但我無法使其與這裏描述的內容一起工作,並最終採取了不同的方式。 – mwright