使用 Swift 3 将数据从 Modal Viewcontroller 传递到 rootController(不要 Segue)
Posted
技术标签:
【中文标题】使用 Swift 3 将数据从 Modal Viewcontroller 传递到 rootController(不要 Segue)【英文标题】:Pass data from Modal Viewcontroller to rootController with Swift 3 (don`t Segue) 【发布时间】:2017-05-04 20:33:49 【问题描述】:我有问题。
我需要帮助。我一直在寻找解决方案大约 5 个小时。可惜没有成功。
我的问题是我有几个故事板并且在没有 Segue 的情况下创建。
我希望将选定的 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
。这里有什么问题?
我也尝试过委托和闭包,但没有成功。请帮我。
【问题讨论】:
您可能需要出示您刚刚创建的viewController
。顺便说一句,你想回到你以前的 VC 还是展示一个全新的?
如果我再介绍一次,那还是为了回忆不好。我对 ModalViewController 使用了 Present (vc, animated: true ...) ,我想用解雇回来。使用静态变量,我可以通过标题,但它不干净还是?
不,使用static var
会在以后给您带来麻烦。请在下面查看我的答案以获得更好的选择。
【参考方案1】:
试试这个:
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
属性设置为呈现的视图控制器它。换句话说,这个属性包含对前一个视图控制器的引用。
【讨论】:
我试过这段代码。应用程序崩溃了。这是错误代码:无法将“UINavigationController”(0x1104e8008)类型的值转换为“timeSheet.addTimeViewController”(0x10e257d68)。这是控制器存在的代码: @UmitSevim 答案已更新!有机会请再试一次... :) 很遗憾没有成功。我再次遇到同样的错误:(。 @UmitSevim Weird...请尝试按原样复制和粘贴我的代码。你可能错过了什么…… 我也复制了你的代码并没有成功插入:)。我没有进一步发展的愿望。 :D以上是关于使用 Swift 3 将数据从 Modal Viewcontroller 传递到 rootController(不要 Segue)的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 TableViewController 传递到 XIB 文件而不使用 Segues-Swift 3
Swift - 使用 selectedIndex 更改 var
Swift 3:将数据从 TabBarController 传递到子视图控制器
如何使用 SWrevaelviewController swift 3 将数据从 tableview 的特定行传递到另一个视图控制器