博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS UINavigationController
阅读量:4958 次
发布时间:2019-06-12

本文共 2091 字,大约阅读时间需要 6 分钟。

一、初始化

// 1.创建导航控制器    OneViewController *one = [[OneViewController alloc] init];    // 2.创建nav的栈底控制器    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:one];    除了上述方法,下列三种方法亦可将一个控制器加入栈内  [nav pushViewController:one animated:YES];   nav.viewControllers = @[one];  [nav addChildViewController:one];    //下面这样写是错的,因为这个属性只读   nav.childViewControllers=@[one]; ❌

  

二、压栈、出栈

UINavigationController以栈的形式保存子控制器@property(nonatomic,copy) NSArray *viewControllers;@property(nonatomic,readonly) NSArray *childViewControllers;使用push方法能将某个控制器压入栈- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;使用pop方法可以移除控制器将栈顶的控制器移除- (UIViewController *)popViewControllerAnimated:(BOOL)animated;回到指定的子控制器(直到移除到viewController为止)- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;回到根控制器(栈底控制器)- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;

  

三、导航栏如何显示内容

导航栏的内容由栈顶控制器的navigationItem属性决定UINavigationItem有以下属性影响着导航栏的内容左上角的返回按钮@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;中间的标题视图@property(nonatomic,retain) UIView          *titleView;中间的标题文字@property(nonatomic,copy)   NSString        *title;左上角的视图@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;UIBarButtonItem *rightBarButtonItem  右上角的视图@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

  

四、导航栏的高度是44,Y值为20 ,栈控制器的高度从(0,0)开始,导航栏从(0,20,宽,44)开始,状态栏从0开始。一个导航控制器只有一个导航栏。导航栏显示什么由栈顶控制器决定。在用storyboard拖导航控制器推出新的控制器时,如果想做好新的控制器的关联及操作,common+n建一个类(控制器).h.m文件,把storyboard里的新控制器class名设为文件名,即做好了关联。

 

五、storyboard与导航控制器

ps:点击某个空间不需要判断必须跳转就用自动型Segue,需要判断要用手动型Segue

1.按住ctrl+左键把一控件拖线到另一个控制器,选push即可 (自动型Segue)

2.按住控制器拖线到另一个控制器,想实现push,需设置Segue等属性

2.1什么是Segue?

2.2 Segue的属性

2.3手动型Segue

  

// 模拟(1秒后执行跳转)    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{       // 跳转 -- 执行login2contacts这个segue 需要在source控制器执行这个方法,去跳转到目标控制器        [self performSegueWithIdentifier:@"login2contacts" sender:nil];    });

 

 

 

转载于:https://www.cnblogs.com/yumian/p/5166826.html

你可能感兴趣的文章
宏定义
查看>>
ubuntu12.04 串口登录系统配置
查看>>
poj3061
查看>>
linux--多进程进行文件拷贝
查看>>
笔记:git基本操作
查看>>
.net开发工作中遇到的问题(附带解决方案)(持续记录)
查看>>
ajax 请求数据
查看>>
k8s-部署WEB-UI(dashboard)
查看>>
linux常用命令
查看>>
推荐 30 款最好的免费项目管理软件
查看>>
SDN第五次上机作业
查看>>
leetcode 657. Judge Route Circle
查看>>
Redis+MongoDB 最佳实践 做到读写分离 -摘自网络
查看>>
Gold Smith第一章
查看>>
漂在等待离职的日子(二)
查看>>
SharePoint BDC(Business Data Connectivity)服务-PowerShell
查看>>
在Lumia 950 XL上运行Windows 10 ARM64,是种什么体验?
查看>>
源 ppa
查看>>
写给五年前的自己(软件测试工程师总结)(未更新完)
查看>>
在Windows上远程运行Linux程序
查看>>