私のtableViewで非常に奇妙な問題が発生しています。時にはセルをクリックし、必要に応じてセグメントしますが、ランダムなdetailViewControllerにセグメンテーションします。 detailViewControllerへUITableViewCellエラーが間違ったコントローラに接続しました
segues「現在モーダル」detailViewControllerとカスタムオブジェクト「場所」を渡す
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("PLACE SELECTED: SECTION \(indexPath.section) ROW \(indexPath.row) :: \(my_sections[indexPath.section])")
self.selectedPlace = my_sections[indexPath.section].rows[indexPath.row]
let buttons_count = self.selectedPlace!.buttons.count
switch buttons_count {
case 0:
self.performSegue(withIdentifier: SegueIdentifier.NoButton.rawValue, sender: self.tableview.cellForRow(at: indexPath))
case 1:
self.performSegue(withIdentifier: SegueIdentifier.OneButton.rawValue, sender: self.tableview.cellForRow(at: indexPath))
case 2:
self.performSegue(withIdentifier: SegueIdentifier.TwoButton.rawValue, sender: self.tableview.cellForRow(at: indexPath))
default:
break
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (sender as? PlaceTableViewCell) != nil {
if let indexPath = self.tableview.indexPathForSelectedRow {
let place = self.my_sections[indexPath.section].rows[indexPath.row]
navigationController?.view.backgroundColor = UIColor.clear
switch(segue.identifier!) {
case SegueIdentifier.NoButton.rawValue:
assert(segue.destination.isKind(of: PlaceDetailsViewController.self))
let vc = segue.destination as! PlaceDetailsViewController
vc.place = place
case SegueIdentifier.OneButton.rawValue:
assert(segue.destination.isKind(of: OneButtonViewController.self))
let vc = segue.destination as! OneButtonViewController
vc.place = place
case SegueIdentifier.TwoButton.rawValue:
assert(segue.destination.isKind(of: TwoButtonViewController.self))
let vc = segue.destination as! TwoButtonViewController
vc.place = place
default: break
}
}
}
}
場所オブジェクトがplace.buttonsがあります 私はテーブルビューが含まれているのUIViewControllerから接続3 seguesを持っています:[Button]
3つのdetailViewControllerはボタンの数が異なる以外はほとんど同じです。
のtableViewは、時々のtableViewは、それがランダムなセルを通過し、正常およびその他の回のように動作しますplace.buttons
のサイズに基づいて使用するセグエを決定します。理由がわからない。
'prepare(for:)'なぜ、選択したセルを使って場所をもう一度取得するのですか?すでに 'self.selectedPlace'に入っています。あるいは単に' performSegue'の 'sender'引数としてその場所を指定することもできます。 – Paulw11
ここに記載された助言の多くを守った後、私はソートエラーであると思います。何とかmy_sections。行は表に記載されている順序と一致しません。 –