selectRowAtIndexPath无法在swift中工作

时间:2015-08-13 09:09:06

标签: swift uitableview

我正在尝试以编程方式选择tableview行。我一直在关注文档和其他参考,但它不起作用。我没有收到错误,只是没有选择行。

注意:目前我只想手动选择一行。

我是否正确使用了委托,数据源和NSIndexPath?

 override func viewDidLoad() {
        super.viewDidLoad()

    var myPath = NSIndexPath(forRow: 1, inSection: 0)
    myTableView.selectRowAtIndexPath(myPath, animated: false, scrollPosition: UITableViewScrollPosition.None)

enter image description here

4 个答案:

答案 0 :(得分:5)

在调用viewDidLoad时,表格视图可能尚未就绪或未填充。

请在viewDidAppearviewWillAppear中尝试:

override func viewDidAppear(_ animated: Bool){
    let myPath = NSIndexPath(row: 1, section: 0)
    tableView.selectRow(at: myPath as IndexPath, animated: false, scrollPosition: UITableViewScrollPosition.none)
}

答案 1 :(得分:0)

尝试使用super

super.tableView(self.tableView, selectRowAtIndexPath: myPath, animated: false, scrollPosition: UITableViewScrollPosition.None)

答案 2 :(得分:0)

您应该尝试使用UITableView方法didSelectRowAtIndexPath。它应该比viewDidLoad更好。

答案 3 :(得分:0)

UITableViewScrollPositionNone如果查看目前无法显示,则在viewDidLoad / viewWillAppear期间仍然存在问题。 在这种情况下,您可以使用UITableViewScrollPositionMiddle滚动到某个单元格。