我正在尝试以编程方式选择tableview行。我一直在关注文档和其他参考,但它不起作用。我没有收到错误,只是没有选择行。
注意:目前我只想手动选择一行。
我是否正确使用了委托,数据源和NSIndexPath?
override func viewDidLoad() {
super.viewDidLoad()
var myPath = NSIndexPath(forRow: 1, inSection: 0)
myTableView.selectRowAtIndexPath(myPath, animated: false, scrollPosition: UITableViewScrollPosition.None)
答案 0 :(得分:5)
在调用viewDidLoad
时,表格视图可能尚未就绪或未填充。
请在viewDidAppear
或viewWillAppear
中尝试:
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
滚动到某个单元格。