首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios中止didSelectRowAtIndexPath

ios中止didSelectRowAtIndexPath
EN

Stack Overflow用户
提问于 2012-01-16 16:02:37
回答 2查看 816关注 0票数 1

当某个条件不满足时,我想中止这个方法,我该如何做呢?

我不使用tableView:willSelectRowAtIndexPath: method。我认为有可能将这两种方法结合起来,以防止某些行被选中并被推入另一个ViewController?

编辑:

伙计们非常感谢。

现在,这段代码完美地工作了:

代码语言:javascript
复制
- (NSIndexPath*)tableView:(UITableView *)tableView1 willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger totalcount = [totalarr count]; //totalarr is a global mutable array.

    NSIndexPath *rowToSelect = indexPath;

    if (totalcount == 0)
    {
        rowToSelect = nil;
    }
    return rowToSelect;

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-16 16:05:34

当要选择行时,tableView:willSelectRowAtIndexPath:被发送到表视图委托。您的委托有机会更改所选内容,或者通过返回可选选择的NSIndexPath对象或nil不进行任何选择而完全取消它。

因此,如果希望抑制某些行的选择,请使用tableView:t willSelectRowAtIndexPath:p,检查p,如果不希望选择,只需返回nil。因此,如果取消所选内容,则永远不会调用tableView:didSelectRowAtIndexPath:

如果您有机会在didXXYY类型方法中“取消”willXXYY方法中的内容,请不要这样做。did意味着选择已经提交;UIKit可能已经显示了这一点,其他事件侦听器可能已经响应了,等等。它很容易导致奇怪的行为。

票数 3
EN

Stack Overflow用户

发布于 2012-01-16 16:04:50

正如您提到的,实现tableView:willSelectRowAtIndexPath:。如果希望行是可选的,则返回所提供的索引路径,否则返回零。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8882665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档