选择特定的 UITableViewCell 时如何进行推送转场

How to make a push segue when a specific UITableViewCell is selected

我正在开发我的第一个 iOS 应用程序和 swift 的新学生。

一切正常,但我无法弄清楚如何从特定单元格转到第三个视图控制器。我有一个 IOS UITableView,其中包含三个部分,共有 (44) 个单元格。点击时所有单元格都会转到一个标题为 DetailVC 的单元格:showProductDetai,这很好。我遇到的问题是,我只需要 (1) UITableView 中第 0 行第 5 行中的特定单元格即可转到它自己的 ViewController,我在其中标题为:second view controller而不是正常的 showProductDetail VC。是否有一种智能方法可以使 tableView 的第 0 节第 5 行中的特定单元格在被选中时转到第二个视图控制器?

这是我当前可用的代码。我将如何编写代码来进行更改?

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "ProductCell", for: indexPath) as! ProductTableViewCell

    // Configure the cell...
    let productLine = productLines[indexPath.section]
    let products = productLine.products
    let product = products[indexPath.row]

    cell.product = product

    return cell
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    let productLine = productLines[section]

    return productLine.name
}

// Mark: UITableViewDelegate

var selectedProduct: Product?

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    let productLine = productLines[indexPath.section]
    let product = productLine.products[indexPath.row]
    selectedProduct = product
    performSegue(withIdentifier: "ShowProductDetail", sender: nil)


}

// Mark: - Navigation

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    if segue.identifier == "ShowProductDetail" {
        let DetailVC = segue.destination as! DetailViewController
        DetailVC.product = selectedProduct

    }
}

看到我在这里做了什么吗?您可以使用 indexPath 参数获取用户触摸的部分和行,然后您可以设置您的程序化转场。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    if ((indexPath.section == 0) && (indexPath.row == 5)) {
        performSegue(withIdentifier: "GoToSecondViewController", sender: nil)
     } else {
        let productLine = productLines[indexPath.section]
        let product = productLine.products[indexPath.row]
        selectedProduct = product
        performSegue(withIdentifier: "ShowProductDetail", sender: nil)
    }
}

为所需的部分和行编写 segue 代码:

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

    if indexPath.section == 0 && indexPath.row == 5 {
        //Perform Segue
    } else {
        //Rest of the functionality
    }
}

确保您已连接正确的 Sugue 并在 Storyboard 中提供正确的标识符。

你不需要写prepareSegue方法