因为习惯了使用代码写界面,偶尔一次使用控件,记录一下。
最新的Xcode5 使用Main.storyboard作为默认。
首先新建一个项目,选择Single View Application
![](https://img-blog.csdn.net/20140321165659156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmFsYmF0cg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后,一路next。工程项目建立完成
![](https://img-blog.csdn.net/20140321165811531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmFsYmF0cg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
打开storyboard
![](https://img-blog.csdn.net/20140321170039703?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmFsYmF0cg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
选择一个Navigation Controller拖到图中区域
可以看到,如图。
然后,删除Root View Controller
右击Navigation Controller ,把root 链接到 view Controller上,把上图的箭头放到Navigation左边
![](https://img-blog.csdn.net/20140321171021625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcmFsYmF0cg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
现在分析一下,如果,建立完工程后,你直接在代码中,
- - (IBAction)action:(id)sender {
- NSLog(@"self.navigationController is %@",self.navigationController);
- FirstViewController *first = [[FirstViewController alloc] init];
- [self.navigationController pushViewController:first animated:YES];
- }
你会发现,self.navigaitonController is null,因为没有初始化。之前,我们在代码中的初始化为,
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
-
- self.window.backgroundColor = [UIColor whiteColor];
- MainViewController *mainViewController = [[MainViewController alloc] init];
- UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:mainViewController];
- self.window.rootViewController = nav;
- [self.window makeKeyAndVisible];
- return YES;
- }
所以,我们需要,添加一个navigation Controller,设置rootViewController所以出现了上边的操作。
但是,如果你没有把箭头拖到navigation Controller,那还会打印 self.navigaitonController is null,因为此时程序首先加载的还是Main.storyboard。
转载是请保留:来自http://blog.csdn.net/ralbatr