导航控制器使用全解
导航控制器使用全解
哥特复心 发表于4年前
导航控制器使用全解
  • 发表于 4年前
  • 阅读 1085
  • 收藏 2
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 导航控制器是使用最普遍得,现在进行总结一下,希望能帮到读者!

1.常见方法 1> 将子控制器vc压入栈中 [self.navigationController pushViewController:vc animated:YES];

2> 出栈(弹出栈顶控制器) [self.navigationController popViewControllerAnimated:YES];

3> 直接跳到栈底控制器(回到根控制器) [self.navigationController popToRootViewControllerAnimated:YES];

2.使用原理 1> 导航控制器内部有个viewControllers栈来存放所有的子控制器 2> 展示在导航控制器上面的永远是栈顶控制器的view

3.一般情况下,导航栏上面显示什么内容,由当前栈顶控制器的navigationItem属性决定

  • navigationItem.title : 导航栏的中间标题(也可以直接通过控制器的title属性设置标题)
  • navigationItem.titleView : 导航栏的中间控件
  • navigationItem.leftBarButtonItem : 导航栏左边的按钮
  • navigationItem.rightBarButtonItem : 导航栏右边的按钮

4.特殊:导航栏左上角的返回按钮 文字 由上一个控制器的navigationItem.backBarButtonItem决定

  • 返回按钮不需要监听(默认的操作就是出栈)

利用storyboard完成导航 1.storyboard中用来跳转的每一根线 都是 一个 UIStoryboardSegue对象 1> 自动跳转 (从 某个按钮 拖线到 下一个目的控制器)

2> 手动跳转 (从 来源控制器 拖线到 下一个目的控制器)

  • 一定要给segue绑定一个唯一的identifier
  • 如何跳转?通过来源控制器的一个方法来执行这个UIStoryboardSegue对象 [self performSegueWithIdentifier:@"login2home" sender:nil];

2.UIStoryboardSegue对象 // 唯一标识 @property (nonatomic, readonly) NSString *identifier; // 来源控制器 @property (nonatomic, readonly) id sourceViewController; // 目的控制器 @property (nonatomic, readonly) id destinationViewController;

3.通过UIStoryboardSegue对象完成的跳转过程 1> 初始化(创建)UIStoryboardSegue对象

2> 设置UIStoryboardSegue对象的identifier标识 和 sourceViewController来源控制器

3> 创建目的控制器,并且设置为UIStoryboardSegue对象的destinationViewController属性

4> 在跳转之前,会调用一次sourceViewController的下面方法 // 后面的sender参数就是当初调用performSegueWithIdentifier:sender:方法传入的参数

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

5> 执行UIStoryboardSegue对象 [segue perform];

6> 会将destinationViewController目的控制器压入栈中

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 109
博文 68
码字总数 40593
×
哥特复心
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: