2010-09-28 112 views
0

我的項目首次使用Three20框架工作來處理navigation.But由於一些問題,我要刪除three20 part.So im重新設計我的應用程序。 即時消息試圖做的是當用戶觸摸一個按鈕時顯示一個詳細視圖。我創建了一個新的主窗口,因爲之前沒有。它沒有導航控制器。 我用Hoew實現按鈕點擊導航


DetailViewController * detailViewController = [[DetailViewController alloc] init]; [self.navigationController pushviewController:detailviewController animated:YES]

in the buttos touch up event。 但是當我運行的應用程序沒有按鈕touch.No警告或錯誤顯示。 我已經在其他應用程序中完成了它,但它只是在這裏沒有工作。

回答

1

由於您沒有使用UINavigationController,因此您的UIViewController的navigationController屬性將保持爲零。 「編譯明智」沒有問題,因爲該屬性存在,但編譯器不知道該屬性將保持零,因此不顯示任何警告/錯誤。

在Objective-C中允許向nil對象發送消息,因此代碼不會在運行時崩潰並且不執行任何操作。

如果您想讓代碼運行&,您需要將UIViewController放入UINavigationController。一旦UIViewController顯示在UINavigationController中,該屬性將自動設置爲UINavigationController。

編輯:你可以使用這樣的東西,而不是顯示someController,「封裝」在UINavigationController中,並顯示該控制器。

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:someController]; 
+0

好吧我明白了。只是因爲編譯器showd沒有問題而感到困惑 – humblePilgrim 2010-09-28 10:33:24