iOS5的自定义容器控制器特性简单使用
iOS5支持开发自定义的容器控制器。比如下面这样:


在本示例中,屏幕的上半部分是嵌套在根控制器中的导航控制器(UINavigationController)。即:
下面说一下编写的主要内容。
首先,创建项目:使用Single View Application类型,并且勾选了storyboard。
然后,编辑storyboard,加入一个新的视图,并且在controller中为该视图设置outlet变量:
创建导航控制器中的第一个子控制器,在这里叫:StepOneController。创建的时候勾选生成xib。
编辑该xib文件,添加按钮及相应的action方法:
下面是关键内容,在根控制器界面中加入导航控制器。
主要包括两部分,在初始化方法中创建子控制器:
@implementation ViewController{
UINavigationController *naviController;
}- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
naviController=[[UINavigationController alloc] initWithRootViewController:[[StepOneController alloc] initWithNibName:@”StepOneController” bundle:nil]];
[self addChildViewController:naviController];
[naviController didMoveToParentViewController:self];
}
return self;
}
在viewDidLoad方法中子控制器的视图加到根控制器相应视图中:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
naviController.view.frame=navigateView.bounds;
[navigateView addSubview:naviController.view];
这时应该可以运行应用,看到图1左侧截图的样子。
之后的事情比较简单了。创建StepTwoController。
编写StepOneController对应按钮的action方法:
- (IBAction)nextStep:(id)sender {
NSLog(@”navi controller: %@”,self.navigationController);
StepTwoController *controller=[[StepTwoController alloc] initWithNibName:@”StepTwoController” bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
这篇文章上的评论的 RSS feed TrackBack URI