2012-10-14 45 views
0

我是一個新的iOS開發人員,提出了一個簡單的問題:我想以編程方式從一個視圖控制器移動到下一個,我該如何編寫此代碼?如何參考代碼中的當前視圖控制器

到目前爲止,我有:

UINavigationController *navigationController; 
    navigationController = [[UINavigationController alloc] init]; 
    [self.view addSubview:navigationController.view]; 
    [navigationController pushViewController:viewController animated:NO]; 

我甚至不知道這是否會工作,最終,但是我的主要問題是「的viewController」在第4行的程序不知道那是什麼。這是我當前的視圖控制器的名稱,但我如何設置它,以便它知道我的意思是由viewController?另外,上面是if/else語句的一部分,該語句發生並連接到NSUserDefaults類,以使視圖控制器僅指如果條件和條件先前未被接受。這會工作嗎?謝謝。

回答

0

首先簡單的回答:通過self當你想通過「當前」對象。

更重要的考慮因素是:屏幕上的導航控制器?除非您使用的導航控制器(可能)是窗口的根視圖控制器,否則很可能您的代碼不會有太多工作。

這是相當容易設置在故事板(「嵌入」 - >「導航控制器」),然後你不需要在代碼中實例化,你只需使用self.navigationController(通常)。

+0

謝謝。是的,我正在使用故事板。我更改了代碼,但是現在出現錯誤,提示「不止一次推送同一視圖控制器實例」。這意味着你告訴我的作品,但是我設定做我想做的事情是錯誤的。 – jac300

+0

對,因爲它看起來像你試圖推動同一個視圖控制器的另一個實例(在這種情況下爲'self')。無論何時您處於「當前」視圖控制器中並且它已被嵌入到導航控制器中,都無需重新推入;我有信心,這是合理的意義,你可以通過你的應用程序思考和需要發生的事情:-) –

0

通常情況下,您會在推送之前實例化viewController,以便程序知道它是什麼。當然,你可以有一個if語句,並根據if語句的計算方式推送這個新的視圖控制器。

我不確定你寫的代碼是否正確取決於你的應用程序的結構以及你在做什麼。通常,導航控制器被製作爲窗口的根視圖控制器,並且您在創建導航控制器時使用自己的根視圖控制器來設置導航控制器。

+0

哦,我明白了!非常感謝!! – jac300

相關問題