您會收到此錯誤消息,因爲您可能試圖使用Navigator控制器代碼(推送)從一個VC到另一個VC,並且您可能沒有在代碼或Interface Builder中設置導航控制器。
雖然您可以在不使用導航控制器的情況下呈現/關閉VC,但我建議您從此開始。
請注意術語:導航控制器堆棧上的VC使用push/pop,而其他VC(不在導航控制器堆棧上)的VC使用present/dismiss。
有一對夫婦的方式呈現一個VC對另一個VC的「頂部」,它依賴於VC上是否存在SB以及:
1-如果VC不會在你的IB存在而你只是編程方式創建和呈現VC,你可以這樣做:
MyUIViewControllerSubclass *myLittleSubclass=[[MyUIViewControllerSubclass alloc]init];
myLittleSubclass.view.frame=self.view.frame; //this is for example 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」。
希望這會有所幫助。
謝謝@Shah Paneri,我忘記了筆尖的名字..現在它的工作 – Balamurugan 2013-03-14 12:14:32