如何将特定的UITableView行发送到特定的ViewController?

时间:2017-01-18 13:10:16

标签: ios swift uitableview viewcontroller

我有3个ViewControllers和一个包含3个项目的表视图。

如何将每个tableview行发送到不同的viewcontroller

这是我的代码:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var data: [String] = ["Go to First VC", "Go to Second VC", "Go to Third VC"]

@IBOutlet weak var myTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    // Table configurations
    myTableView.dataSource = self
    myTableView.delegate = self
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.textLabel?.text = data[indexPath.row]
    return cell
}

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

我的猜测是在performSegue()函数中应用didSelectRowAt,但我不知道如何引用特定行。

2 个答案:

答案 0 :(得分:1)

这很简单

didSelectRowAtIndexPath方法中,只需检查indexpath.row

if indexPath.row == 0 {
    // go to first viewController
 } else if indexPath.row == 1 {
    // go to Second viewController
 } else if indexPath.row == 0 {
    // go to Third viewController
 }

答案 1 :(得分:0)

首先在tableviews中选择了识别indexPath.row所需的方法 这里indexpath包含section和row,所以你需要检查segue的行。

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

    if indexPath.row == 0 {
        //segue first view controller
    }
    else if indexPath.row == 1 {
        //segue second view controller
    }
    else {
        //segue last(third) view controller
    }
}

希望这会对你有所帮助。