视图控制器-navigationcontroller-xib方式

xib方式使用导航控制器

1)创建空应用程序,修改main函数,将最后一个appdelegate参数改成nil

2)添加名为mainwindow的xib

3)设置程序的main interface为mainwindow.xib

4) 设置xib的file's owner的类为uiapplication

5) 添加一个nsobject对象,设置类是appdelegate,在file's owner上点右键,连接delegate到当前这个代理对象上。

6) 修改appdelegate头文件,在成员变量window前添加iboutlet修饰符,使之可以连线。在实现文件里,删除和window相关代码。

7)在xib里添加一个window对象,在appdelegate对象上点右键,连接window到刚添加的window对象上。一定要设置window的visibleatlanch属性为yes否则,控件不能    输入

8)拖一个navigationcontroller到xib文件里

9) 在window上点右键,连接rootviewcontrolller到刚添加的导航控制器上

10)添加一个视图控制器,来充当导航控制器的根视图控制器,这个控制器要带着xib文件。

11)在mainwindow.xib文件里,设置导航控制器上的根视图控制器的类为刚添加的rootviewcontroller

12) 这时候在rootviewcontroller的视图上添加一个按钮,程序就可以跑起来。

13)添加一个新的控制器secondviewcontroller,在根视图控制器上,编写按钮点击事件,push出来secondviewcontroller.

14) 在secondviewcontroller上添加一个文本框和一个按钮,并使用辅助视图建立连线。建立一个namelabel的标签和一个click按钮点击事件

15)在rootviewcontroller里添加标签namelabel,使用辅助视图建立连线,建立按钮的点击事件

16)在secondviewcontroller里定义协议或者block,对于协议,需要创建一个协议属性,对于block需要在实现文件里创建一个私有成员。

17)在secondeviewcontroller里的按钮点击事件里,触发协议或者block.并且使用pop方法回到rootviewcontroller

18) 在rootviewcontroller里实现协议,在push到secondviewcontroller的时候,设置secondviewcontroller的代理是自己。或者,在push到secondviewcontroller的时候

      调用secondviewcontroller里的方法,传入block;

 

 

 

注意:block是c语言的扩展,函数参数括号里是有参数名称的。

 如果在第7步,没有设置window的visibleatlanch属性为yes,就的在视图控制器里写如下类似代码

if(!textFiled.window.isKeyWindow)
{
    [textFiled.window makeKeyAndVisiable];
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (!textField.window.isKeyWindow) {
        [textField.window makeKeyAndVisible];
    }
}
否则类似textfield的控件,不能输入内容

 

 

 

 

 

 

 

 

在xib里,可以设置导航控制器里的根视图控制器的标题

 

posted on 2013-10-02 22:53  老猫zl  阅读(1274)  评论(0编辑  收藏  举报