首页 > 解决方案 > 是否可以调用另一个视图控制器的tableview didSelect 索引路径并执行它?

问题描述

首先

我有一个 ViewController,它有 Button

该按钮将通过导航返回到特定的 ViewController

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)

在我的destinationViewController 中有TableView

我需要自动进行第一行

所以我在上面的 setViewControllers 之前写下这些代码

但是得到零

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

这是destinationViewController

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
       }
    }

我的问题是我应该如何从另一个 viewController 调用我想要的 tableView 的行?

标签: iosswiftuitableview

解决方案


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

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


推荐阅读