如何使用 table 视图转到不同的视图控制器?

How do I use a table view to go to different view controllers?

我有一个带有一个原型单元格的表格视图。当我 运行 应用程序时,我可以让多个单元格显示正确的内容。我希望每个单元格导航到不同的视图控制器,而不是仅显示不同内容的同一个视图控制器。我为每个视图控制器创建了一个 segue 并相应地命名它。但我无法弄清楚下一步该怎么做。我是否将以下内容与某种 if 函数一起使用?:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    
} 

如果选择第一个单元格使用 segue“one”转到视图控制器“one”,如果选择单元格 2 使用 segue“two”转到视图控制器“two”,我该如何指定?我知道没有代码这会更难,但从概念上讲这是如何工作的?

是的,didSelectRowAt函数是识别当时选择了哪个单元格或行的最佳方式。

  • didSelectRowAt 函数应该如下所示

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.row == 0 {
           performSegue(withIdentifier: "FirstViewController", sender: nil)
        } else if indexPath.row == 1 {
           performSegue(withIdentifier: "SecondViewController", sender: nil)
        }
    }
    
  • Segue 准备函数应该如下所示

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       if segue.identifier == "FirstViewController" {
          let vc = segue.destination as? FirstViewController
       } else if segue.identifier == "SecondViewController" {
          let vc = segue.destination as? SecondViewController
       } 
    

希望,有帮助:)

您可以从 Xcode 身份检查器栏中为故事板 vc 提供标识符,最好使用与 UIViewController 名称相同的名称

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
    {
        
        let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController") as? MyViewController
        self.navigationController?.pushViewController(vc!, animated: true)
        
    }