2017-05-04 10 views
1

問題があります。Swift 3(don`t Segue)を使用してModal ViewcontrollerからrootControllerにデータを渡します

私は助けが必要です。私は約5時間の解決策を探していました。残念ながら、成功はありません。

私の問題は、いくつかのストーリーボードがあり、Segueなしで作成されていることです。

私は、rootviewControllerへの選択されたTableviewcellタイトルのパスが大好きです。私は私のfirstViewControllerでプロパティtestを持って

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ 
    let indexNumber = "\(indexPath.row)" 

    let indexPath = tableView.indexPathForSelectedRow 
    let currentCell = tableView.cellForRow(at: indexPath!) as UITableViewCell! 
    let storyboard = UIStoryboard(name: "addTime", bundle: nil) 
    var viewController = storyboard.instantiateViewController(withIdentifier: "addTimeVC") as! addTimeViewController 
    viewController.test = "TESTABCDEF" 
    passedValue = ("\(indexNumber)") 
    dismiss(animated: true, completion: nil) 
} 

は、ここに私のModalViewTableで私のコードです。ここに何が間違っていますか? 私はデリゲートとクロージャーで試してみましたが、成功しませんでした。私を助けてください。

+0

作成したばかりの 'viewController'を表示する必要があるかもしれません。ところで、以前のVC *に戻るか、まったく新しいVCをプレゼントしますか? –

+0

もし私がもう一度それを提示しても、それでもメモリは良くないです。私は を持っています。(vc、animated:true ...)をModalViewControllerに返します。 static varではタイトルを渡すことはできますが、それはきれいではありませんか? –

+0

いいえ、 'static var'を使うと後者の問題に陥ります。より良い選択肢については、私の答えをご覧ください。 –

答えて

0

代わりにこれを試してみてください:

let indexNumber = "\(indexPath.row)" 
let indexPath = tableView.indexPathForSelectedRow 
let currentCell = tableView.cellForRow(at: indexPath!) as UITableViewCell! 

let viewController = navigationController!.presentingViewController as! addTimeViewController 
viewController.test = "TESTABCDEF" 
passedValue = ("\(indexNumber)") 
navigationController!.dismiss(animated: true, completion: nil) 

をあなたはモーダルpresent(_:animated)方法、にそれを提示ビューコントローラに設定presentingViewController性質を持って発表されたビューコントローラを使用してビューコントローラを提示するとき。つまり、このプロパティには、以前のView Controllerへの参照が含まれています。

+0

私はこのコードを試しています。アプリがクラッシュしました。これはエラーコードです: 'UINavigationController'(0x1104e8008)型の値を 'timeSheet.addTimeViewController'(0x10e257d68)にキャストできませんでした。これはコントローラの現在のコードです: –

+0

@UmitSevim回答更新!チャンスを取ったときにもう一度お試しください:) –

+0

残念ながら、成功しません。私は再び同じエラーが発生します:。 –

関連する問題