iphone下的导航视图

本文详细介绍了UINavigationController的特点及其在iOS应用中的使用方法。包括如何创建和配置导航控制器、如何实现视图间的跳转与返回,以及如何正确管理视图栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UINavigationController的特点:

1)采用栈的形式来存放多个视图

2)当需要视图跳转是,多个视图按一定次序入栈,位于栈顶的视图显示出来。

3)当需要从当前视图返回前一视图是,可将栈顶的视图弹出,接着显示器下面的视图。

4)如此操作下去,直至返回到navigationController中的根视图为止。

使用技巧

1)在一个程序的人口类中,需要声明一个UINavigationController的属性,以便使用。

2)在这个navigationController属性在初始化时,可以指定其根视图。

3)如需视图跳转,将需要显示的ViewController通过其navigationController属性的pushViewController方法将其压入栈中

4)弹出视图时,可以通过popViewControllerAnimated方法将栈顶视图弹出。

注意事项:

1)每个ViewController都继承与UIViewController,故其自身都拥有一个navigationController属性和tabBarController属性。

2)当某个UIViewController位于某个tabBar

 

 

 

当表视图需要一个表视图单元的数据时调用,一般用cellForRowAtIndex参数作为数据来源的索引,直接作为数组下标即可。如果用全局变量作为数据索引,就有两个问题。

  1.全局变量需要与实际的数据在数组中的位置同步,需要添加全局变量增加或减小的代码。

  2.在重新绘制表格的时候需要把全局变量清零,就是当全局变量等于数组元素个数的时候。例如在拨号程序中,原数组中并不是每个元素的数据都是可用的表格单元数据,需要判断布尔属性,控制全局索引自增。在函数开头,添加判断全局变量是否等于数组元素个数的代码,将全局变量清零,否则在上下拖动表格时会出现数组下标越界的错误。

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

UINavigationController应用程序框架:

1)创建应用程序为窗口框架

2)设置窗口子视图为导航控制器

       #import<UIKit/UIKit.h>

      @interface  NavAppdelegate:NSObject<Appdelegate>{

      UIWindow * window;

                 UINavigationController * navController;

       }

       @property (nonatomic,retain)IBOutlet  UIWindow*window;

       @property (nonatomic,retian)IBOutlet  UINavigationController * navController;

        @end;

  在appdelegate.m中把navController添加为window的子视图

  在mainWindow.nib中添加一个Navigation Controller对象,并且从AppDelegate按住control键连接到   Navigaion Controller对象,连接到Appdelegate的输出口navController;

  3)创建根视图控制器

     创建根视图控制器类,注意是派生在UITableViewController的。

    在mainWindow.nib下,列表模式下展开Navigation Controller对象,然后选择其子对象View Conroller,

   苹果键+4打开身份识别设置Identify,设置class为根视图控制器

4)在根视图控制器中添加一个数组用来存放所有需要入栈的视图,注意最后一个入栈的视图是展现在最上面的。

5)定义其他需要导航的子视图

6)在根视图的数据源方法tableView:cellForRowAtIndex,获取出列单元,如果不存在就创建一个恶

7)在根视图的数据委托方法didSelectRowAtIndexPath:中把要入栈的最后那个视图压人栈

       [self.navController pushViewController:nextController animatied:YES];

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值