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

时间:2016-02-29 19:54:36

标签: swift uitableview tableview viewdidappear

我正在尝试以编程方式在tableview中选择一个单元格。我在点击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)
    }
}

2 个答案:

答案 0 :(得分:3)

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

  

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

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

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

答案 1 :(得分:2)

selectRowAtIndexPath将需要一个包含行和节的indexPath。不只是一个索引。