2011-11-04 86 views
2

嗨我剛開始在iOS 5上進行實驗。我創建了一個沒有故事板的項目,並嘗試以編程方式添加視圖(完全不使用界面生成器)。我有以下代碼,但窗口的rootViewController屬性似乎不工作。我做了self.tabController的NSLog,它顯示我值(非空),但在self.window.rootViewController = self.tabController後,我輸出self.window.rootViewController它在控制檯中給我空。rootViewController屬性無法在iOS 5項目中使用xcode 4.2

我一直在努力解決這個問題很長一段時間了。任何幫助,將不勝感激。

以下是我didFinishLaunching方法:

self.dataSource = [[[ADJWebDataSource alloc] init] autorelease]; 

ADJBrowseListingsViewController *browseListingsVC = [[ADJBrowseListingsViewController alloc] init]; 

ADJSecondViewController *secondVC = [[ADJSecondViewController alloc] init]; 
tabBarController = [[UITabBarController alloc] init]; 
tabBarController.view.frame = CGRectMake(0, 0, 320, 460); 
navController = [[UINavigationController alloc] initWithRootViewController:browseListingsVC];  
NSMutableArray* viewControllers = [[NSMutableArray alloc] initWithCapacity:2]; 

[viewControllers addObject:browseListingsVC]; 
[viewControllers addObject:secondVC]; 

[navController release]; 
[browseListingsVC release]; 
[secondVC release]; 

tabBarController.viewControllers = viewControllers; 
[viewControllers release]; 
browseListingsVC.dataSource = self.dataSource; 
NSLog(@"controller %@", self.tabBarController); 
self.window.rootViewController = self.tabBarController; 
NSLog(@"controller1 %@", self.window.rootViewController); 
[self.window makeKeyAndVisible]; 

return YES; 

感謝 維克

+0

您是否啓用ARC? –

+0

嘿韋恩。不,我不知道。我正在使用保留和釋放方法。 – Vik

+1

你在哪裏創建了self.window?你確定self.window不是零嗎? –

回答

1

在Firoze的幫助下找到了它。實際上,我必須以編程方式分配和初始化self.window。我很困惑,因爲我從來沒有這樣做過iOS 4或更早版本。但是之後我才意識到在iOS5之前,每個項目都有一個MainWindow.xib,它已經分配並初始化了self.window,現在如果我沒有在iOS5中使用storyboard,沒有.xib文件,我需要自己分配和初始化它在代碼中

1

當您使用故事板,你爲什麼還創建視圖控制器對象? 你可以直接在故事板上準備你的視圖流,添加必要的細節等。 如果你的視圖控制器是浮動的(沒有任何segues),你必須在故事板類中使用方法「instantiateViewControllerWithIdentifier」。

對於視圖控制器,如果要在故事板中添加導航,請選擇視圖控制器,進入菜單「編輯器」 - >「嵌入」並選擇導航控制器。它會將導航控制器添加到您的視圖控制器。

+0

嘿薩蒂揚,謝謝你的回覆。正如我在帖子中告訴你的,我沒有使用故事板。我沒有故事板的支持創建了這個項目。 – Vik

+0

當您使用iOS5時,您可以充分利用其功能的強大功能,這非常簡單。無論如何,您是否創建了選項卡視圖控制器? – Satyam

+0

我沒有創建tabBar控制器如下:tabBarController = [[UITabBarController alloc] init]; (整個代碼在主文章中提到)再次,故事板的問題是它在iOS 5之前的iOS版本不支持。另外,我假設如果我不使用它,知道究竟發生了什麼將是一個很好的學習故事板,並嘗試以編程方式進行 – Vik