2012-10-15 38 views
0

我想使用代碼從一個視圖控制器移動到另一個視圖控制器。我有這個:如何訪問已存在的視圖控制器

[self.navigationController pushViewController:ViewController2 animated:YES]; 

此代碼用於啓動的第一個屏幕。我希望它(在特定條件下)推送到名爲ViewController2的NEXT視圖控制器。 ViewController2已經存在(它是一個故事板項目)。但是當前的視圖控制器不知道以上代碼中的ViewController2是什麼。我如何'獲取'或'訪問'ViewController2?它已經退出,使用.h和.m文件,但我該如何調用它!?

回答

1

如果你使用故事板,你可以訪問它通過它的標識是這樣的:

ViewController2 *viewController2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"]; 

確保正確設置其標識爲「ViewController2」或任何名稱是有道理的。

+0

謝謝,我試過這個,但我不能得到它的工作。我設置了標識符,並將此代碼放入viewController2的實現中,但它表示使用未聲明的標識符「self」。所以它不知道故事板是什麼?我需要以某種方式/某處實例化嗎? – jac300

+0

你試圖調用這個方法,哪個類?我可以看到是否抱怨「自我」的唯一原因是它不在UIViewController子類中,或者您正嘗試在靜態方法中執行此操作。 –

+0

好的,對不起 - 我修正了「自我」錯誤,但它仍然不起作用!所以我試圖讓ViewController1移動到ViewController2。所以在ViewController2我有:ViewController2 * viewController2 = [self.storyboard instantiateViewControllerWithIdentifier:@「ViewController2」]; [self.navigationController pushViewController:viewController2 animated:YES];但我得到一個錯誤,說'故事板()不包含視圖控制器標識符'ViewController2',但我確實在屬性檢查器中設置標識符。 – jac300

1

這不是您在使用故事板時通常推送視圖控制器的方式。你應該在IB中建立一個push segue,並使用performSegueWithIndentifier:sender:去下一個控制器。你還應該實現prepareForSegue:sender:你可以訪問源控制器和目標控制器。這是您通常提供第二個視圖控制器完成其工作所需的任何數據的方法。

+0

我正在簡化情況,但整個故事是我試圖繞過僅在首次發佈時看到的條款和條件屏幕。所以我建立了一個NSUser Defaults鍵和一個條件語句,但我只需要知道如何有條件地推送到下一個視圖。除了如何引用下一個視圖控制器之外,我擁有所有的代碼來執行我想要的操作。 – jac300

相關問題