2011-11-04 59 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