Ios Swift中具有两个不同序列的一个原型单元

Ios Swift中具有两个不同序列的一个原型单元,ios,swift,uitableview,uiviewcontroller,segue,Ios,Swift,Uitableview,Uiviewcontroller,Segue,我正在尝试将一个原型单元连接到两个不同的segue路径,每个路径都指向另一个视图控制器。我在另一篇文章中读到,连接segues必须从源视图控制器本身连接到目标视图控制器,而不是从原型单元连接到视图控制器 我的源代码视图控制器称为BuildsViewController,它由tableview单元格填充。我正在开发一个应用程序,在该应用程序中,单击单元格将根据是否在根视图控制器上单击了登录或来宾按钮打开目标视图控制器。(buttonClicked是一个实例变量,用于存储用户在根视图控制器上单击的按

我正在尝试将一个原型单元连接到两个不同的segue路径,每个路径都指向另一个视图控制器。我在另一篇文章中读到,连接segues必须从源视图控制器本身连接到目标视图控制器,而不是从原型单元连接到视图控制器

我的源代码视图控制器称为BuildsViewController,它由tableview单元格填充。我正在开发一个应用程序,在该应用程序中,单击单元格将根据是否在根视图控制器上单击了登录或来宾按钮打开目标视图控制器。(buttonClicked是一个实例变量,用于存储用户在根视图控制器上单击的按钮)

但是,当我单击BuildsViewController上的单元格时,什么也没有发生。我哪里出错了?请注意,登录按钮有标记0,来宾按钮有标记1

     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    switch self.buttonClicked?.tag {
    case 0?:
            performSegue(withIdentifier: "showLogin", sender: self)
            break;
    case 1?:
            performSegue(withIdentifier: "showGuest", sender: self)
            break;

    default:
        preconditionFailure()
    }
}



   override func prepare (for segue: UIStoryboardSegue, sender: Any?) {


    switch segue.identifier {
    case "showLogin"?:

       if let row = self.tableView.indexPathForSelectedRow?.row {

            let build = self.buildStore.allBuilds [row]
            let detailBuildsViewController = segue.destination as! BuildDetailViewController
                detailBuildsViewController.build = build
            break;
        }
    case "showGuest"?:


        if let row = self.tableView.indexPathForSelectedRow?.row {

            let build = self.buildStore.allBuilds [row]
                let detailBuildsViewControllerGuest = segue.destination as! BuildDetailViewControllerGuest
                detailBuildsViewControllerGuest.build = build
            break;
        }
    default:
        preconditionFailure("Unexpected segue identifier")
        }
    }
    override func tableView (_ tableView: UITableView,
                         cellForRowAt indexPath: IndexPath) -> UITableViewCell {

   let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell", for: indexPath)
    let build = buildStore.allBuilds [indexPath.row]
    cell.textLabel?.text = build.name

    return cell

}

谢谢大家!

Swift 3修改了didSelectRowAtIndexPath方法的签名。您需要向方法名称添加覆盖以覆盖超类方法

替换:

func tableView(tableView:UITableView,didSelectRowAtIndexPath:nsindepath)


Swift 3修改了DidSelectRowatineXpath方法的签名。您需要向方法名称添加覆盖以覆盖超类方法

替换:

func tableView(tableView:UITableView,didSelectRowAtIndexPath:nsindepath)


显示您的
cellForRowAt
code您的didselect方法被称为??哦,没错。我需要重写didselect方法,而方法签名是错误的。我现在修好了。它工作得很好!谢谢@幸运的是,欢迎你@S.Patel。所以准备好帮助:)显示你的
cellForRowAt
code你的didselect方法被称为??哦,没错。我需要重写didselect方法,而方法签名是错误的。我现在修好了。它工作得很好!谢谢@幸运的是,欢迎你@S.Patel。所以准备好帮助:)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)