通过单击 swift 中的 TableView 单元格转到 ViewController

aaa*_*918 5 xcode ios swift

有一个MenuViewController类,其中记录了表中记录的数组:

import Foundation
import UIKit

class MenuViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var menuTableView: UITableView!

let myTitle = ["??????", "??????????", "?????????"]


override func viewDidLoad() {
    super.viewDidLoad()


    menuTableView.delegate = self
    menuTableView.dataSource = self
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myTitle.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = menuTableView.dequeueReusableCell(withIdentifier: "MenuCell") as! MenuTableViewCell
    cell.labelText.text = myTitle[indexPath.row]
    return cell
}
}
Run Code Online (Sandbox Code Playgroud)

你需要在里面写什么才能进入信息控制器?

Gab*_*res 4

我假设您正在使用故事板。首先,您需要在两个视图控制器之间建立某种连接。您可以通过设置“segue”来做到这一点。按住 Ctrl 键并单击从第一个视图控制器拖动到第二个视图控制器。它看起来像这样:

创建转场

松开鼠标后,您将看到以下内容:

创建 Segue 2

单击“显示”。现在您将创建一个segue。现在你需要给它命名。因此,单击情节提要中显示的 Segue。它基本上只是从菜单视图控制器到信息视图控制器的箭头。在右侧,您将看到一个可以命名它的地方(给它一个标识符):

创建 Segue 3

现在...您已经完成了故事板中需要做的所有事情。现在,在 MenuViewController 的实际代码中,您需要关联单击 tableviewcell。您可以使用委托方法 didSelectRowAt 来完成此操作。

我看到您已经使用此行设置了委托: menuTableView.delegate = self

这确保了didSelectRowAt每当用户点击一行时都会调用该函数。

所以现在你要做的就是编写代码来执行转场:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.performSegue(withIdentifier: "YourSegueName", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

注意:以下是有关与 tableview 行交互的更多信息: 如何在 swift 中检测 tableView 单元格触摸或单击

以下是有关 segue 的更多信息: IOS - 如何使用 swift 以编程方式进行 segue

您还可以进行更多自定义...例如通过 Segue 将数据传递到下一个视图控制器。方法如下: 通过 segue 传递数据