前些天写的附件浏览文件的模块被其他同事对接,今天测试说点击他的那个界面的按钮查看不了文件。把bug丢给我了。。。大过年的哥哥还在撸~~~
刚刚一看,原来他的控制器是present出来的,在cell被点击或者cell上的按钮被点击的时候想push出我的附件浏览控制器。。。当然怎么点都没有用啦。。。
现在我用一个导航控制器包着我新建的附件浏览控制器,然后再present过去,瞬间柳暗花明又一村。。
-(void)CheckbtnAction:(NSNotification*)noti{
FileMeta *meta = [ objectForKey:@"file"];
if(==DoneLode){
NSLog(@"打开%@",);
#pragma mark-- -BY HYR 2018-2-13 -查看PDF文件 准备跳转界面
HYRPDFReaderViewController *pDFReadViewController = [[HYRPDFReaderViewController alloc] init];
= [UIColor lightGrayColor];
NavigationController *navi = [[NavigationController alloc] initWithRootViewController:pDFReadViewController];
// 显示pdf文档
[pDFReadViewController showPDFWithFileMeta:meta andPage:0];
[self presentViewController:navi animated:YES completion:nil];
}
}
但是问题来了,我附件浏览的控制器在别的地方都是push过来的,所以返回按钮的事件都是pop回去。唯独这个小兔崽子的界面是present出来的*我的也要present。。。那如何返回呢?且看下面两点
1、可以判断当前self有没有present方式显示的父视图presentingViewController
if () {
[self dismissViewControllerAnimated:YES completion:nil];
} else {
[ popViewControllerAnimated:YES];
}
2、可以通过判断的最后一个是否是当前控制器,
或者 == self,如果是的话,那就证明我当前self这个控制器是被push过来的
if ( == self) {
[ popViewControllerAnimated:YES];
} else {
[self dismissViewControllerAnimated:YES completion:nil];
}
只要在返回按钮的方法里写上以上两种方式的一种,就可以大功告成啦!