在 tableview 上调用 selectRowAtIndexPath 时出现 Swift 错误

Posted

技术标签:

【中文标题】在 tableview 上调用 selectRowAtIndexPath 时出现 Swift 错误【英文标题】:Swift Error when calling selectRowAtIndexPath on tableview 【发布时间】:2016-02-29 19:54:35 【问题描述】:

我正在尝试以编程方式选择表格视图中的单元格。点击 selectRowAtIndexPath 时出现 SIGABORT 错误。 myIndex 的值为 1。我从实现了所需的 tableview 委托和数据源方法的 viewController 调用它。

override func viewDidAppear(animated: Bool) 
    if myIndex != nil 
        self.myTableView.selectRowAtIndexPath(NSIndexPath(index: myIndex), animated: false, scrollPosition: UITableViewScrollPosition.Middle)
    

【问题讨论】:

你确定单元格在那里吗? 【参考方案1】:

注意控制台中的错误消息——它们在大多数时候都非常有用。当您运行代码时,您会看到消息:

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“索引路径无效 与 UITableView 一起使用。传递给表视图的索引路径必须包含 正好有两个索引指定节和行。请使用 如果可能,在 UITableView.h 中的 NSIndexPath 上的类别。

这描述了问题是什么以及如何解决它 - 你应该为 NSIndexPath 使用不同的初始化程序

self.myTableView.selectRowAtIndexPath(NSIndexPath(forRow: 1, inSection: 0), animated: false, scrollPosition: .Middle)

【讨论】:

优秀答案!我正要发布类似的东西,但我无法更好或更完整地解释它。 (已投票) 谢谢。我刚刚弄清楚如何显示错误控制台。有没有关于调试和/或阅读错误控制台的好教程?谢谢 抱歉,找不到好的教程,也许这个会有所帮助 - raywenderlich.com/28289/debugging-ios-apps-in-xcode-4-5。您还可以观看 wwdc 前几年关于调试的视频,其中有很多很棒的见解【参考方案2】:

selectRowAtIndexPath 需要一个带有行和节的 indexPath。不仅仅是一个索引。

【讨论】:

以上是关于在 tableview 上调用 selectRowAtIndexPath 时出现 Swift 错误的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 在 tableView.selectRow 中更改背景颜色

调用实例方法“tableView”没有完全匹配

如何使用 selectionModel 在 QTableView 中选择多行

在 tableView 上使用 CustomCell,如何调用 didSelectRowAtIndexPath?

在 tableview 上调用 selectRowAtIndexPath 时出现 Swift 错误

调用[tableView reloadData];在 modalViewController 的 viewController 上