3

我可以使用self.navigationController和delegate.navigationController有什麼區別

MyFirstAppDelegate *delegate = (MyFirstAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.navigationController popViewControllerAnimated:YES]; 

[self.navigationController popViewControllerAnimated:YES]; 

這兩者有什麼區別?

請回答我......

在此先感謝..

+0

順便說一下,按照慣例,只有類名是大寫的。你應該將'Delegate'改爲'delegate'。由於objective-c具有全局名稱空間,因此像'delegate'這樣的名稱可能會導致命名衝突。我會建議'appDelegate'。它也將使代碼更易於閱讀,因爲大多數人會認爲'委託'代表包含代碼的實例的委託,而不是全局應用程序的委託。 – TechZen 2011-06-27 12:13:24

+0

@ TechZen,完成...感謝您指出這一點... – 2011-06-27 12:45:30

回答

6

當您從不是由導航控制器控制的視圖控制器的對象訪問導航控制器時,使用第一種形式。該表單通過擁有它的對象(即應用程序委託)訪問導航控制器。由於應用程序委託可以在程序中的任何位置輕鬆調用,因此它是停放事物的好地方,而不是任何對象可能需要引用的地方。

您使用由導航控制器控制的視圖控制器中的第二個窗體。它只能從先前被壓入堆棧的視圖控制器中運行。

+0

謝謝..我的懷疑完全清除了......再次感謝TechZen – 2010-01-15 13:25:39

4

我假設你的代碼是在視圖控制器,它的導航堆棧上執行一個導航控制器。

如果是這樣,那麼他們都訪問相同的導航控制器和他們之間沒有任何區別

通常,您將使用第二種形式。

+0

如果您發現該回答有用,請考慮「接受」它。謝謝。 – gerry3 2010-01-15 12:37:50