UITableView 的 IndexPath 不起作用
Posted
技术标签:
【中文标题】UITableView 的 IndexPath 不起作用【英文标题】:IndexPath for UITableView Not Working 【发布时间】:2011-11-16 06:09:48 【问题描述】:我正在尝试确定我的UITableView
的选择行的indexPath
,以便我可以相应地传递相关数据。现在,无论我选择什么单元格,它都会继续记录0
。任何想法为什么? (是的,表的IBOutlet
已正确连接)。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"patientChart"])
UITabBarController *tabBar = (UITabBarController *)segue.destinationViewController;
PatientChartViewController *vc = [tabBar.childViewControllers objectAtIndex:0];
NSIndexPath *path = [self.appointmentTableView indexPathForSelectedRow];
vc.appointmentDictionary = [self.appointmentArray objectAtIndex:path.row];
【问题讨论】:
选中单元格后是否取消选中? 你是对的。我将取消选择行移到 performSegue 行之前,现在可以正常工作。谢谢。 如果对您没有问题,我会将其作为答案发布,如果您能接受,我将不胜感激 =) 在我的情况下它不起作用,因为我在单元格中有一个触发 segue 的按钮。通过按下一个按钮,就没有调用委托... 【参考方案1】:方法indexPathForSelectedRow
如果选择了行,则返回所选行的索引,否则返回0。
因此,例如,如果 cell
已被选中,后来又被取消选中,那么您将无法通过调用 [tableView indexPathForSelectedRow];
获得其 index path
,因为当时没有选择任何单元格。
【讨论】:
@LukeMcneice 那么您的tableView
始终为nil
或未选择任何内容。【参考方案2】:
如果使用 ios5,解决方案是在 .h 中声明一个实例并将属性设置为复制,如下所示。
NSIndexPath *path;
@property (nonatomic, copy) NSIndexPath *path;
将 indexpath 值分配给实例,即cellForRowAtIndexPath
方法中的路径。
我在尝试在 iOS5 上执行此操作时遇到了这个问题,并按照上述方法解决了这个问题。希望对你有所帮助。
【讨论】:
以上是关于UITableView 的 IndexPath 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UITableView,cellForRowAt indexPath 没有被调用
tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 没有被调用
获取 UITableView 中最近添加的行的 indexPath
如何在 UITableView 中获取选定的 indexPath.section 和 indexPath.row 值?
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) 几乎符合可选要求