我正在尝试将一些数据推送到另一个 Storyboard 中的 ViewController
,但我无法正确排序。
我有一个 UITableView
,它有一个项目列表,在选择一行后,我想将一个键传递给 ViewController
,它位于 中嵌入的另一个 Storyboard 上code>UITabBarContoller
已被推送到导航堆栈。
我可以毫无问题地来回转换,问题是将数据传输到 View Controller 。
我的主 Storyboard中的 TableView 代码
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "segue_details", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print("Pepare for segue: \(String(describing: segue.identifier))")
if let barViewControllers = segue.destination as? UITabBarController ,
let nav = barViewControllers.viewControllers?[0] as? UINavigationController,
let destinationVC = nav.topViewController as? DetailsTabViewController {
let vehicle = tableData[tableView.indexPathForSelectedRow!.row] as! JSON
//THIS NEVER FIRES
print("\n\n\n\n\n\nPrepare call key: \(vehicle["CallKey"])\n\n\n\n\n")
destinationVC.callKey = vehicle["CallKey"].stringValue
}
}
我已经切换了 if let
的 barViewControllers 和导航 Controller 试图获得正确的 View Controller ,但我似乎无法让它工作。
这是主 Storyboard 的 UITableView
DetailsTabViewController代码
class DetailsTabViewController: UITabBarController {
public var callKey : String = ""
override func viewDidLoad() {
super.viewDidLoad()
print("\n\n\n\n\n Details for callKey: \(callKey) \n\n\n\n\n")
title = callKey;
}
}
及其配套的 Storyboard
最佳答案
其实并没有我想的那么复杂。 segue 目标是 DetailsTabViewController。只需转换为那个而不是 UITabBarController(因为我的自定义类已经是 UITabBarController
类型)。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let barViewControllers = segue.destination as? DetailsTabViewController {
//Do your data pass / setup here
}
}
关于ios - 通过 Segue 将数据传递到推送到导航堆栈的另一个 Storyboard中的 UITabBarController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718907/