导航控制器(UINavigationController)

时间:2023-03-09 16:33:41
导航控制器(UINavigationController)

一。导航控制器基础

  1.导航控制器的组成

    i。中间视图

    ii。导航栏

    iii。工具栏

  2.配置一个导航界面

    a。配置一个导航界面最重要的部分就是配置被包含的视图控制器。

    b。当它所属的视图控制器在导航控制器所控制的堆栈的顶部时(即该视图控制器将要显示时),系统自动显示该视图控制器的UINavigationItem。开发人员无需编写任何代码来调用UINavigationItem。

    c。    

  3.配置导航视图控制器

    a。可以使用UINavitionController的pushViewController:animated:方法将后面的视图控制器压入栈,从而显示它的视图。给定的视图控制器成为顶视图。对于弹出一个视图控制器,其实不需要做什么,界面上有一个后退按钮,用户点击它,顶视图将自动从栈中弹出。

    b。可以使用下面的这些方法从栈中弹出视图控制器:

    c。总之,UINavigationController提供了两个方法来管理堆栈。

      例如:当调用下一个视图控制器(即从一个界面切换到另一个界面,如用户选择了某个联系人名字)时,应该使用下面的方法将下一个视图控制器(从用户的角度,即下一页)推到堆栈中:

      - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

        当用户单击返回按钮来返回到上一个视图控制器时,popViewControllerAnimated就会被调用。所以开发人员无需自己调用popViewControllerAnimated方法。

      - (UIViewController *)popViewControllerAnimated:(BOOL)animated;    

    d。导航控制器本身有个viewController属性,该属性是一个NSArray,包含了栈上的条目。

      因此,根条目是数组的objectArray:0,顶条目也就是它的lastObject,也可以使用topViewController属性得到顶条目。

     但是,导航控制器还有一个visibleViewController属性,因为topViewController也许包含另一个视图控制器并显示它的视图,所以visibleViewController和topViewController可能不同。

    e。

  4.视图控制器的事件

**************************************

二。创建导航控制器实例

  1.在两个页之间导航实例

  2.在两个页之间传递数据

    经常需要在两个页之间传递数据,这个必须掌握。

    一个常规的做法是:在下一个视图控制器上声明所属的属性。然后,当上一个视图控制器调用下一个视图控制器时,就可以设置这些属性值。从而,第二个视图控制器就获得了第一个视图控制器传递过来的数值。

      例如:

    当然,如果想从第二个视图控制器那里会传个第一个视图 ,需要委托。

  3.定制返回按钮

    在默认的情况下,下一页上的返回按钮的文字是上一页的标题,但是也可以在程序中修改为其他文字(但是要记住:返回按钮是放在上一页的视图控制器上)。

  4.在导航控制栏上添加系统按钮和左右按钮