プロトタイプセルを、別のビューコントローラにつながる2つの異なるセグウェイパスに接続しようとしています。別の記事では、ソースビューコントローラ自体からビューコントローラへのプロトタイプセルではなく、デスティネーションビューコントローラまで、セグを接続する必要があります。スイフトで2つの異なるエッジを持つプロトタイプセル
ソースビューコントローラは、buildviewViewControllerと呼ばれ、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
}
ありがとうございます!
と
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
は、あなたの 'cellForRowAt'コード –
あなたdidselectメソッドが呼び出されるを表示します? – luckyShubhra
ああそうです。私はdidselectメソッドをオーバーライドする必要があり、メソッドのシグネチャは間違っています。私は今それを修正した。それは美しく動作します!ありがとう! @luckyShubhra –