创建一个Storyboard工程 storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程
2013-08-29 20:40
736 查看
创建一个Storyboard工程
storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程。有关storyboard的介绍在后面的文章中提到。首先利用xcode4.2创建一个新项目,选择空工程:
2.填写项目名称和勾选使用ARC
3、注释掉AppDelegate中的以下代码。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// // Override point for customization after application launch.
// self.window.backgroundColor = [UIColor whiteColor];
// [self.window makeKeyAndVisible];
return YES;
}
4、添加storyboard控件,起名叫MainStoryBoard
5、添加MainStoryBoard到工程中
6.在MainStoryBoard中添加viewController控件
7、编译运行
下面以一个实际项目来,分上面三步来详细介绍一下storyboard的使用
第一步:创建UITabBarViewController、UINavgationController、UIViewController共同使用
最后实现的storyboard的效果是:
介绍一下上面的结构,其中tabBarController是storyboard的开始视图,见下图:
由tabBarController分出三个子视图,其中前两个子视图是navigationcontroller,一个是viecontroller。其中navigationcontroller中有相应的子viewcontroller。
下面开始实现上面的工程:
1)创建一个工程叫stroyboarddemo,选择空工程
创建好之后的截图:
2)添加一个storyboard
起名为:Storyboard,打开初创建的storyboard,可以看到什么也没有。
3)添加一个tabBarController
4)把storyboard添加到工程中。在NationalLibraryConteollerAppDelegate中添加下面的代码。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.window.rootViewController=[stryBoard instantiateInitialViewController];
return YES;
}
首先是获取到storyboard的引用,然后是找到跟controller。
5)编译运行代码。
6)下面把tabBarController的子视图换成navigationcontroller
打开soryboard,删除tabBarController的孩子。
然后添加两个navigationcontroller
navigationcontroller和tabBarController关联起来。
按住control建拖动鼠标,选择关联即可。
下面修改两个navigationcontroller跟controller的view的颜色。
7)在次编译运行。
8)在navigationcontroller中在添加孩子视图
我先添加了三个viewcontroller
然后他们分别与控制器相连,相连之前先在相应的父视图中添加一个下一页的按钮。
下面按钮和新添加的viewcontroller相联系
同样在添加其他的按钮。
9)运行
目前为止,我们还没有添加一行代码,即可实现一个相对比较复杂的控制器。虽然实现了一个比较复杂的控制器的框架,但是在实际项目中,每个视图中的数据可能是动态加载的,这时候我们需要和代码相关联。接下来我将介绍一下storyboard怎么和相应的代码相关联。
10)、添加相应viewcontroller的实体类FirstViewController
11)、把FirstViewController和相应的视图相关联
12)在FirstViewController中添加按钮的事件。
-(IBAction)onClickButton:(id)sender
{
NSLog(@"FirstViewController on click button");
}
并且和相应的按钮相关联。
13)运行,当点击绿色视图中的下一页的时候,出现日志:
因为按钮有两个事件,一个是执行上述方法,还有一个作用是压栈下一个视图进入控制器。其先后顺序是先执行方法在压栈。
第二步、xib和storyboard共同使用
我们常需要实现以下需求,首先是一个登录页面或者是注册页面。登录成功之后跳入到上面复杂的导航界面。下面详细介绍一下怎么实现一个xib实现的登录页面,跳转到storyboard的导航页面。
1)先创建一个登录页面LoginViewController
2)修改NationalLibraryConteollerAppDelegate,先进入登录页面。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
LoginViewController *loginViewController=[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
// UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.window.rootViewController=loginViewController;//[stryBoard instantiateInitialViewController];
return YES;
}
3)运行即可。
4)在xib中,添加登录按钮。
5)添加登录按钮相应的事件
-(IBAction)onClickButton:(id)sender
{
}
6)xib和按钮事件相关联
7)按钮事件和上面的复杂控制器相关联
-(IBAction)onClickButton:(id)sender
{
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
self.view.window.rootViewController=[stryBoard instantiateInitialViewController];
}
8)运行
第三步是多个storyboard共同使用
多人合作或者项目有一定的复杂度,使用一个storyboard,肯定使storyboard复杂,我们可以根据需求把复杂的逻辑拆分成若干个storyboard。
1)我们在上面的基础上在添加一个tabBarController的孩子
2)添加一个ManagerViewController
3)、新添加的ManagerViewController和相应的控制器相关联
4)在视图中添加按钮
5)在ManagerViewController中添加按钮事件
-(IBAction)onClickButton:(id)sender
{
}
6)按钮事件和视图按钮相关联
7)添加一个新的storyboard,叫做second
8)添加导航器
9)在ManagerViewController的按钮事件中导航进入second即可
-(IBAction)onClickButton:(id)sender
{
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"second" bundle:nil];
[self presentModalViewController:[stryBoard instantiateInitialViewController] animated:YES];
}
10)运行
上面就是使用storyboard实现一个相对比较复杂的项目。
相关文章推荐
- 创建一个Android程序(简单介绍工程里面各个文件的作用)
- Xcode6 怎么创建一个不带storyboard的空白工程?
- 创建一个Android程序(简单介绍工程里面各个文件的作用)
- android 给LinearLayout中添加一定数量的控件,并让着一定数量的控件从右到左移动,每隔若干秒停顿一下,最后一个view链接第一个view,然后继续移动循环往复,形成一个死循环简单动画效果
- 目前大家对Python都有一个共识,就是他对测试非常有用,自动化测试里Python用途也很广,但是Python到底怎么进行自动化测试呢?今天就简单的向大家介绍一下怎么使用Python进行自动化测试
- IntelliJ IDEA如何创建一个简单的java工程
- 代码创建UIWindow -> UIView -> RootViewController中遇到UIview覆盖,控件事件不响应问题
- 创建一个简单iphone工程的步骤
- iOS开发UI篇—UITableview控件简单介绍
- 一个简单的JSPweb工程创建过程
- 用 JSQMessagesViewController 创建一个 iOS 聊天 App - 第 3 部分
- 如何为iOS5创建一个简单GLKit应用程序
- iOS开发UI篇—UITableview控件简单介绍
- 使用picker View控件完成一个简单的选餐应用
- OpenCV 2 学习笔记(13): 算法的基本设计模式<4> :使用Model-View-Controller模式创建一个应用程序
- 使用 UITableView 创建表格应用演练(1)——一个简单的表格应用
- 简单教程:如何创建一个基于金山卫士界面库的工程
- iOS开发UI篇—UITableview控件简单介绍
- 创建一个简单的 eclipse+android+maven 工程
- webservice系列——用JDK+CXF创建一个简单的webservice工程