是否可以调用另一个视图控制器的表视图 didSelect 索引路径并执行它?



首先

我有一个视图控制器,它有按钮

该按钮将通过导航返回到特定的视图控制器

var viewControllers = self.navigationController!.viewControllers
while !(viewControllers.last is MainViewController) {  
             viewControllers.removeLast()
          }
let destinationViewController = self.storyboard?.instantiateViewController(withIdentifier: "destinationViewController") as! destinationViewController
viewControllers.append(destinationViewController)
self.navigationController?.setViewControllers(viewControllers, animated: false)

在我的目的地视图控制器有表视图

我需要自动执行第一行

所以我在上面的设置视图控制器之前写下这些代码

但得到零

let indexPath = IndexPath(row: 0, section: 0)
destinationViewController.tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none)  

这是目的地视图控制器

class DestinationViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
      }
}
    extension DestinationViewController:UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
        //Here is user select can be triggered, but I want to call from another viewController
       }
    }

我的问题是我应该如何从另一个视图控制器调用我想要的表视图行?

而不是 destinationViewController.tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none),为什么不打电话:

destinationViewController.
    tableView(destinationViewController.tableView, 
    didSelectRowAt: IndexPath(row: 0, section: 0))

只需做一件事,在您的目标视图中控制器更新您的表视图后查看。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: true, scrollPosition: .top)
}

相关内容

  • 没有找到相关文章

最新更新