2012-09-19 51 views
1

我想加載沒有按鈕的視圖控制器。我的標識設置爲10,並試圖使用如何在故事板中無按鈕加載視圖控制器?

if(...){ 
//load ViewController2 
UIViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"10"]; 
[self.navigationController pushViewController:vc]; 
} 

這裏是我的progect http://www.sendspace.com/file/kfjhd5

什麼問題嗎?

+0

你的問題不在於上述代碼,而是'IBAction'掛鉤到你的按鈕。此外,請注意,您可能要考慮使用'performSegueWithIdentifier'而不是'instantiateViewControllerWithIdentifier'並手動推送它。 – Rob

+1

重複**自己的問題** [如何加載視圖控制器無故事板中的按鈕?](http:// stackoverflow。COM /問題/ 12480929 /如何對負載 - 視圖 - 控制器,而無需鍵合故事板) – Abizern

回答

10

上述代碼在你的問題是好的。我知道你在問如何在沒有按鈕的情況下這樣做,但是演示的問題是你使用了一個按鈕,但沒有正確地將它連接到IBAction。你goNext應該在你的.H爲定義:

- (IBAction)goNext:(id)sender; 

和實現應該是:

- (IBAction)goNext:(id)sender 
{ 
    UIViewController *vc=[[self storyboard] instantiateViewControllerWithIdentifier:@"10"]; 
    [self.navigationController pushViewController:vc animated:YES]; 
} 

我想你創建了一個手動IBAction。在將來值得注意的是,如果您將控制 -drag(或右鍵單擊拖動)從按鈕下拉到助理編輯器文件,您可以自動創建IBAction接口,並且這種錯誤不會發生:

automate creation of IBAction


順便說一句,我個人喜歡使用SEGUE代替,所以我首先定義視圖控制器自身之間的推SEGUE。在Xcode 6,一個將控制從場景上方的視圖控制器圖標到目標場景 -drag:

create segue xcode 6

在Xcode之前的版本6中,一會控制從視圖-drag

create segue

我然後選擇在界面生成的SEGUE並給它一個「故事板識別符」(在本例中,我卡勒:在場景下方的欄控制器圖標d它pushTo10):

specify segue id

我然後有我goNext執行該SEGUE,而不是手動調用pushViewController

- (IBAction)goNext:(id)sender 
{ 
    [self performSegueWithIdentifier:@"pushTo10" sender:self]; 
} 

的該優點是,我的故事板現在視覺上表示的流動我的應用程序(而不是似乎有一個場景漂浮在那裏)和圖形元素(如導航欄)在故事板中正確表示。

你不需要這樣做,但它是另一種可以被意識到的選擇。

相關問題