美文网首页iOS 之路
UINavigationController

UINavigationController

作者: 对歌当酒 | 来源:发表于2016-05-09 10:04 被阅读115次
    • 效果图

    如下所示:


    UINavigationController 效果图
    • UINavigationController

    UINavigationControllerUIViewController 的子类。该对象的视图有两个子视图:UINavigationBartopViewController 的视图,如下所示:

    两个子视图

    当某个应用通过 UINavigationController 对象显示多个屏幕的信息时,相应的 UINavigationController 对象会以栈的形式保存所有屏幕的信息。

    这里的栈是一个数组对象,保存的都是 UIViewController 对象。一个 UIViewController 对象的视图对应一个屏幕,只有位于栈顶的 UIViewController 对象,其视图才是可见的。

    • 初始化

    初始化 UINavigationController 对象时,需要传入一个 UIViewController 对象作为 UINavigationController 对象的根视图控制器,且一直位于栈底。在 application:didFinishLaunchingWithOptions: 方法中设置的代码如下:

    BNRItemsViewController *itemsVC = [[BNRItemsViewController alloc] init];
    // 创建 UINavigationController 对象,该对象的栈只包含 itemsVC
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:itemsVC];
    self.window.rootViewController = nav;
    
    • 入栈

    将创建的 UIViewController 对象压入 UINavigationController 对象的栈(pushViewController:animated: 方法),示例代码:

    BNRDetailViewController *detailVC = [[BNRDetailViewController alloc] init];
    // 将新创建的 BNRDetailViewController 对象压入 UINavigationController 对象的栈
    [self.navigationController pushViewController:detailVC animated:YES];
    
    • UINavigationBar

    UIViewController 对象有一个名为 navigationItem 的属性,类型为 UINavigationItem. 其作用是为 UINavigationBar 对象提供绘图所需的内容。示意图如下:

    NavigationBar

    示例代码:

    UINavigationItem *navItem = self.navigationItem;
    navItem.title = @"Home Page";
    

    UINavigationItem 除了可以设置 title 属性,还可以设置 leftBarButtonItem, rightBarButtonItemtitleView 属性。示例代码:

    UIBarButtonItem *bbi = [[UIBarButtonItem alloc]
                  initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                       target:self 
                                       action:@selector(addNewItem:)];
    navItem.rightBarButtonItem = bbi;
    navItem.leftBarButtonItem = self.editButtonItem;
    
    • 其他

    更新代码并返回后,为使用户能立刻看到更新后的数据,需要刷新 UITableView 对象。
    重写 viewWillAppear: 方法(添加 reloadData 方法),示例代码如下:

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        
        [self.tableView reloadData]; //重新载入数据
    }
    

    代码地址:
    https://github.com/Ranch2014/iOSProgramming4ed/tree/master/10-UINavigationController/Homepwner

    《iOS编程(第4版)》 笔记

    相关文章

      网友评论

        本文标题:UINavigationController

        本文链接:https://www.haomeiwen.com/subject/gdfsrttx.html