当某个条件不满足时,我想中止这个方法,我该如何做呢?
我不使用tableView:willSelectRowAtIndexPath: method。我认为有可能将这两种方法结合起来,以防止某些行被选中并被推入另一个ViewController?
编辑:
伙计们非常感谢。
现在,这段代码完美地工作了:
- (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;
}发布于 2012-01-16 16:05:34
当要选择行时,tableView:willSelectRowAtIndexPath:被发送到表视图委托。您的委托有机会更改所选内容,或者通过返回可选选择的NSIndexPath对象或nil不进行任何选择而完全取消它。
因此,如果希望抑制某些行的选择,请使用tableView:t willSelectRowAtIndexPath:p,检查p,如果不希望选择,只需返回nil。因此,如果取消所选内容,则永远不会调用tableView:didSelectRowAtIndexPath:。
如果您有机会在didXXYY类型方法中“取消”willXXYY方法中的内容,请不要这样做。did意味着选择已经提交;UIKit可能已经显示了这一点,其他事件侦听器可能已经响应了,等等。它很容易导致奇怪的行为。
发布于 2012-01-16 16:04:50
正如您提到的,实现tableView:willSelectRowAtIndexPath:。如果希望行是可选的,则返回所提供的索引路径,否则返回零。
https://stackoverflow.com/questions/8882665
复制相似问题