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];

 

 

PDF格式打印機    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply