【问题标题】:Navigate to a new view controller for every cell in table view导航到表格视图中每个单元格的新视图控制器
【发布时间】:2017-02-13 01:16:56
【问题描述】:

我是 Swift 的初学者。我正在尝试创建一个选项卡式应用程序。对于我的一个选项卡,我正在创建一个表格视图,该视图具有多行,每行具有不同的任务(考虑这一点的一个好方法是 facebook 应用程序,其中更多屏幕中的每个选项都会将您带到单独的视图)

现在,我的表中填充了一个数组:

let array  = ["one", "two", "three]

我想问,每次我点击这些行之一,我想去一个新的视图控制器。这怎么可能?

我尝试的是performSegue 和我在情节提要中给出的identifier,但是会有x 数量的segues 连接到表视图?所以我不认为这是对的? :/

我在生成表格之前就知道数组的内容,所以如果我知道数组值和被点击的行,我如何导航到新的视图控制器?

编辑:

在控制器之间执行 segue 时,我使用的是:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.performSegue(withIdentifier: "showView", sender: self)
}

这当然只会连接到 segue showView 但是,我如何添加多个视图控制器?

【问题讨论】:

    标签: swift xcode


    【解决方案1】:

    你只需要简单的比较tableView中选择了哪一行,然后根据它进行segue。

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let segueIdentifier: String
        switch indexPath.row {
        case 0: //For "one"
             segueIdentifier = "showView1"
        case 1: //For "two"
             segueIdentifier = "showView2"
        default: //For "three"
             segueIdentifier = "showView3"
        }
        self.performSegue(withIdentifier: segueIdentifier, sender: self)
    }
    

    【讨论】:

      【解决方案2】:

      将以下功能添加到您的控制器。

      override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
          navigationController?.pushViewController(NewController(), animated: true)
      }
      

      【讨论】:

        【解决方案3】:

        在 UITableViewController 中使用静态单元格

        总结

        另一种方法是使用带有静态单元格的 UITableViewController。如果您已经知道菜单,那么您可以为每个项目创建静态单元格。

        在情节提要中,您可以将每个单元格的 segue 连接到它们各自的视图控制器。

        示例

        【讨论】:

        • 当我有一个 UITableViewController 时,这对我有用,但是因为除了表格之外我还想要一个控制器上的按钮(并且找不到这样做的方法),我将 UITableView 放在 UIViewController .但静态单元格仅适用于 UITableViewController,而不适用于 UITableView。我怎样才能解决这个问题?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多