首页 > 其他 > 详细

解决UITableView在editing状态下点击任意一行(cell)依旧会触发TableViewCell所绑定的segue 的方法

时间:2015-03-15 00:26:45      阅读:532      评论:0      收藏:0      [点我收藏+]

继续总结 自己在第一个app中遇到的一些小问题

背景条件如下:现有一个prototype cell通过segue(show)与其DetailView相连,此UITableView包含编辑按钮(触发进入编辑editing状态)

如图二,在编辑状态下,假设用户准备选择多个cell进行删除,在用户的finger刚点击任意一个cell时,就已经触发了segue,进入到DetailView中,当通过NV Controller返回时,之前选择的cell当然还在

我所想要的是,在编辑状态下,阻止segue(类型无论是show,show detail或present modally)的perform

技术分享

技术分享

 

个人思路与解决办法如下:

因为跟segue有关,所以我第一时间想到的是prepareForSegue,但是苹果自带的comment已经说明了这个是在navigation发生之前即触发segue之前的准备操作,那么很明显不是这个,不知道各位有没有注意到一个小细节,这个方法并不是UITableViewController里边的方法(如图二),虽然我们创建一个继承UITableViewController的类之后会自带这个方法,但是实际上它是来自于UITableViewController的superclass--UIViewController的,那么UIViewController里边说不定就有关于segue的其他方法

技术分享

 

技术分享

果不其然,UIViewController关于interacting with storyboards的方法里边就有一个

- shouldPerformSegueWithIdentifier:sender:方法,它的介绍就告诉了我们 它可以决定是否触发特定的segue

技术分享

 

实现代码如下:

1 - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
2     if (self.tableView.editing) {
3         return NO;
4     }
5     return YES;
6 }

因为我这里只有一个segue,所以就不用identifier辨别具体是哪个segue了,当处于editing状态时返回NO,segue就不会再触发了~~

 

解决UITableView在editing状态下点击任意一行(cell)依旧会触发TableViewCell所绑定的segue 的方法

原文:http://www.cnblogs.com/fu4904/p/4338524.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!