使用Swift 3将数据从Modal Viewcontroller传递到rootController(不要塞格)

问题描述:

我遇到问题。使用Swift 3将数据从Modal Viewcontroller传递到rootController(不要塞格)

我需要帮助。我一直在寻找一个约5个小时的解决方案。可惜没有成功。

我的问题是,我有几个故事板,并创建没有塞格。

我很喜欢将所选的Tableviewcell标题传递给rootViewController。

这是我在我的ModalViewTable代码:

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) 
} 

我在firstViewController属性test。这里有什么错? 我也尝试与代表和封闭,但没有成功。请帮帮我。

+0

您可能需要呈现刚刚创建的'viewController'。顺便说一句,你想回到你以前的VC *或*提出一个全新的? –

+0

如果我再次呈现它,那么记忆力不好。我有 Present(vc,animated:true ...)到ModalViewController,我想要退出。 使用静态变量,我可以传递标题,但它不干净或? –

+0

不,使用'static var'会让你陷入麻烦。请参阅下面的答案以获得更好的选择。 –

试试这个:

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属性设置为呈现它的视图控制器。换句话说,该属性包含对前一个视图控制器的引用。

+0

我试过这段代码。该应用程序崩溃。这是错误代码:无法将类型'UINavigationController'(0x1104e8008)的值转换为'timeSheet.addTimeViewController'(0x10e257d68)。这是控制器的代码: –

+0

@UmitSevim答案已更新!当你有机会时请再试一次...... :) –

+0

不幸的是没有成功。我再次得到相同的错误:(。 –