iOS实战演练之对于present出来的UINavigationController返回的问题
2016-08-03 17:23
183 查看
如题,现在我们控制页面present到一个UINavigationController页面去
注意“返回”一定要写在返回按钮所在的ViewController页面中
这时候
从效果来说我更推荐第二种,第一种出现的效果是从下往上present出一个页面,第二个效果上更符合返回的要求。
当然,要想直接返回到根viewcontroller也有现成的方法:
不过想要从第5层直接返回到第2层或第3层,则没有现成的方法可以调用了。
但这时若能够知道pop回去的ViewController的指针,也就好办了。
具体写法如下:
在使用时,根据自己返回层的需要,只要改变一下“-2”这个数字就可以达到目的了。
SCMyCardDesignCollectionViewController *vc = [[SCMyCardDesignCollectionViewController alloc]initWithCollectionViewLayout:layout]; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc]; [self presentViewController:nav animated:YES completion:nil];
SCMyCardDesignCollectionViewController.m中
注意“返回”一定要写在返回按钮所在的ViewController页面中
- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:self action:@selector(backMain:)]; }
这时候
backMain:方法有两种:
1、present到新页面(也可以是首页)
-(void)backMain:(id)sender{ UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; SCTabBarController *vc = [storyboard instantiateInitialViewController]; [self presentViewController:vc animated:YES completion:nil]; [self.navigationController popViewControllerAnimated:YES]; }
2、直接dismiss掉这个ViewController
-(void)backMain:(id)sender{ [self dismissViewControllerAnimated:YES completion:nil]; }
从效果来说我更推荐第二种,第一种出现的效果是从下往上present出一个页面,第二个效果上更符合返回的要求。
对与正常的UINavigationController返回总结:
1、弹出当前视图控制器(弹出并向左显示前一个视图)
[self.navigationController popViewControllerAnimated:YES];
2、弹出到指定视图控制器(回到指定视图控制器,也就是不只弹出一个)
[self.navigationController popToViewController:viewController animated:YES];
3、弹出到根视图控制器(比如说你有一个“Home”键,也许就会实施这个方法了)
[self.navigationController popToRootViewControllerAnimated:YES];
具体应用如下:
假设我的一个navigationController里共有4个viewcontroller,要是在每层ViewController返回上一层ViewController,有一个很简单方法:[self.navigationController popViewControllerAnimated:YES];
当然,要想直接返回到根viewcontroller也有现成的方法:
[self.navigationController popToRootViewControllerAnimated:YES];
不过想要从第5层直接返回到第2层或第3层,则没有现成的方法可以调用了。
但这时若能够知道pop回去的ViewController的指针,也就好办了。
具体写法如下:
[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: ([self.navigationController.viewControllers count] -2)] animated:YES];
在使用时,根据自己返回层的需要,只要改变一下“-2”这个数字就可以达到目的了。
相关文章推荐
- “对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题的解决
- 当使用hql进行投影查询时对于外键为空的记录查询不出来的问题
- iOS开发-IOS7自带返回手势问题
- Android录音文件在IOS上播放不出来的问题
- 对于“不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题的解决
- 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成问题的解决办法
- 对于IOS多线程问题的总结与归纳
- iOS开发 -- 解决IOS CLLocationManager 定位返回旧数据的问题
- 【iOS】对于iPhone5分辨率兼容性调整问题
- ios开发 present 出来的viewcontroller 强制横竖屏切换代码分享 (代码不解释)
- SBJsonParser 解析问题,当服务器返回的value为空时,解析出来的value不为空,而为nsnull
- iOS 对于iPhone5分辨率兼容性调整问题
- 对于“不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题的解决
- 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题
- IOS StoryBoard修改对于真机无效的问题
- 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题
- iOS开发presentModalViewController ,若有UITextField,键盘无法下去的问题
- 关于UIImagePickerView present出来时会在顶部空余20px的问题
- ios中对于tabBar选中图片设置的问题
- iOS 关于presentViewController弹出页面反应迟钝的问题