UINavigationController

  • 效果图

如下所示:


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版)》 笔记

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容