2

我有我的故事板3個UIViews,我怎麼可以在它們之間導航與喜歡的動畫,而無需使用導航欄標籤欄?我有我的自定義按鈕的意見。使用UINavigationController父視圖內部時如何視圖故事板之間導航,而無需使用導航欄和標籤欄

Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can 
only be used when the source controller is managed by an instance of UINavigationController. 
+0

Maysam,我的答案下面解決您的問題? – Spectravideo328 2013-03-07 23:50:03

+0

我還沒有嘗試過,有點忙碌 – Maysam 2013-03-08 09:25:26

回答

2

您可以在不使用導航控制器的情況下呈現/關閉VC。

注意術語:導航控制器堆棧上的VC使用push/pop,而其他VC(不在導航控制器堆棧上)的VC使用present/dismiss。

有一對夫婦的方式呈現一個VC對另一個VC的頂部,這取決於是否讓SB存在VC,以及:

1-如果VC不會在你的IB和你的存在只是編程方式創建和呈現VC,你可以這樣做:

MyUIViewControllerSubclass *myLittleSubclass=[[MyUIViewControllerSubclass alloc]init]; 
myLittleSubclass.view.frame=self.view.frame; //this is for exmaple only 
[self presentViewController:myLittleSubclass animated:YES completion:nil]; 

上述內容,顯然你必須先添加MyUIViewControllerSubclass目標C類項目(使用添加文件),然後將其導入到哪個班你正在把上面的代碼。

稍後要解僱它,可以使用MyUIViewControllerSubclass類本身的以下代碼。

[self.parentViewController dismissViewControllerAnimated:YES completion:nil]; 

2 - 如果你已經添加了MyUIViewControllerSubclass目標C類項目(使用添加文件),但你打算使用IB來設計它,你已經在IB添加VC,改變它的類在IB到MyUIViewControllerSubclass,然後你可以使用此代碼:

mySubclass *myLittleSubclass=[self.storyboard instantiateViewControllerWithIdentifier:@"theVC"]; 
[self presentViewController:myLittleSubclass animated:YES completion:nil]; 

可以解僱同上。 確保您點擊SB中的VC和身份檢查員,將SB ID設置爲「theVC」並選中「Use SB ID」。

希望這會有所幫助。

+0

在中間代碼示例中,如果您在iOS 5+中運行,self.parentViewController應該是self.presentingViewController。 ParentViewController現在通過null。 – JoshRivers 2013-06-02 01:30:02

0

推動畫只支持: 按住Ctrl鍵單擊並拖動不與此錯誤工作。您可以將您的視圖控制器嵌入IB中的一個編輯 - >嵌入式 - >導航控制器中,並隱藏導航欄。這可能會提供您想要的功能。