我試圖將一個原型單元格連接到兩個不同的segue路徑,每個路徑導致另一個視圖控制器。我在另一篇文章中讀到,連接segues必須從源視圖控制器本身到目標視圖控制器,而不是視圖控制器的原型單元。在Swift中有兩個不同分段的原型單元格
我的源視圖控制器被稱爲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
}
謝謝!
顯示你的'cellForRowAt'代碼 –
你didselect方法被調用? – luckyShubhra
哦,沒錯。我需要重寫didselect方法,並且方法簽名是錯誤的。我現在修好了。它的作品非常漂亮!謝謝! @luckyShubhra –