にコアデータオブジェクトを渡す、私はサブクラス化TabBarController私はchildViewsでそれを解析するtableViewControllerのリストからTabBarControllerにコアデータオブジェクトを渡すためにしようとしているtableViewControllerからTabBarController
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let objs = controller.fetchedObjects , objs.count > 0 {
let casE = objs[indexPath.row]
performSegue(withIdentifier: "showDetail", sender: casE)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let destination = segue.destination as? CaseDetail {
if let casE = sender as? Case {
destination.casE = casE
}
}
}
}
にセグエを行うので、渡しますそれはtabBarController
class CaseDetail: UITabBarController {
var casE: Case?
}
そして、子ビューでそれを取得しようとする
override func viewDidLoad() {
super.viewDidLoad()
let tbvc = self.tabBarController as! CaseDetail
casE = tbvc.casE
print(casE as Any)
}
をのviewDidLoad
しかし、私は何も得ていません。データを渡す他の方法を知っている人はいますか?
アドバイスありがとうございました!
'destination.casE = casE'の直前に出力先の値を、' casE = tbvc.casE'の直前にtbvcの値を出力します。アドレスは同じですか?もしそうなら、どちらが最初に印刷されますか? –
のアドレスは同じではなく、最初に「宛先」に続いて「tbvc」になりますが、それはどういう意味ですか? 先 tbvc と、このような警告警告だ:ビューウィンドウではありません。<0x7fabafd0bb60 Tabula.CasesListVC>の<0x7fabafc33030 Tabula.CaseDetail>提示する試みを階層! –
Just66
準備中(segue:UIStoryboardSegue、送信者:Any?)にprintステートメントを追加します。 print( "a")とviewDidLoad()に別のprint文を追加します。 print( "b")。シーケンスがa - > bまたはb - > aであるかどうかを確認する –