セルからsegue経由で別のコントローラにtitle(String)を渡そうとしましたが、実際には動作しますが、動作は完全に間違っています。セルからviewControllerにデータを渡す際の不具合
メインコントローラ
var cellTitlePressed:String?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
cellTitlePressed = categories[indexPath.row].title
performSegue(withIdentifier: "toCategory", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destination = segue.destination as? CategoryVC {
if let title = cellTitlePressed {
destination.categoryTitle = title
} else {
destination.categoryTitle = "Undefined category"
}
}
}
私は、セルをクリックした場合(例えば「ビール」のカテゴリー)私は条件が初めてでは動作しません推測するので、私は「未定義のカテゴリー」のタイトルを参照してください。
先のコントローラ
private var _categoryTitle: String!
var categoryTitle:String {
get {
return _categoryTitle
}
set {
_categoryTitle = newValue
}
}
@IBOutlet weak var categoryTitleLabel: UILabel!
@IBAction func backButtonPressed(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
categoryTitleLabel.text = categoryTitle
}
その後、私は戻ってくる(解任)と別のカテゴリ(「コーヒー」)をクリックすると、私は以前のタイトルを参照 - ように代わりに「コーヒー」の「ビール」をし、 。だから、いつも一歩遅れました。
categoryTeleの名前の代わりに、カスタムセッターとゲッターを削除してください。 – BlackM
prepareForSegueのcellTitlePressedの値は何ですか? –
http://stackoverflow.com/questions/34109152/how-to-update-selected-row-before-segueの重複 – matt