子视图可见时如何禁用 selectRowAtIndexPath
Posted
技术标签:
【中文标题】子视图可见时如何禁用 selectRowAtIndexPath【英文标题】:How do I disable selectRowAtIndexPath when subview is visible 【发布时间】:2009-12-21 21:48:38 【问题描述】:我正在编写类似滑动功能的“tweetie 2”,但遇到了我希望是最后的绊脚石。
当用户在表行上滑过时,“控件”视图按预期动画,但是当行为选择时, didselectrowatindexpath 被解雇。期望的结果是当“控件”视图可见时禁用 didSelectRowAtIndexPath 方法或缺少更好的短语...停止响应者链以继续通过“控件”视图。
uitouch 委托方法在自定义 uitablviewcell 中使用/被调用。
【问题讨论】:
【参考方案1】:如何根据需要设置/取消设置UITableView
中allowsSelection
的值?
【讨论】:
【参考方案2】:这里应该有一点逻辑。假设您将此属性添加到 UITableViewController 子类:
NSIndexPath *indexPathForCellInUtilityMode;
当用户触发单元格的实用视图时,您的单元格会执行以下操作:
NSIndexPath *cellIndexPath = [parentViewController.tableView indexPathForCell:self];
parentViewController.indexPathForCellInUtilityMode = cellIndexPath;
然后:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if ([indexPath compare:indexPathForCellInUtilityMode] != NSOrderedSame)
//Do whatever you're normally doing in this method.
因此,您将禁用受影响单元格的选择,同时仍允许用户与其他可见单元格进行交互。
【讨论】:
抱歉延迟响应,但是如何在不分配/初始化 RootViewController 的情况下设置 parentViewController 属性(这将发生在我的自定义单元格中)还是预期的路线? 不用担心。由于您正在创建一个自定义单元子类,因此您可以轻松地向它添加一个名为 parentViewController 的属性。确保属性是分配而不是保留以防止保留循环。那么,当viewController实例化cell时,设置cell.parentViewController = self;
有意义吗?
@Danilo 我认为确实如此。我将在本周发布一些示例代码,以便验证我的假设。感谢您的所有帮助。以上是关于子视图可见时如何禁用 selectRowAtIndexPath的主要内容,如果未能解决你的问题,请参考以下文章
当tableview单元格变得不可见时如何获取UITextField(UITableViewCell的子视图)文本值