ios - 通过 Segue 将数据传递到另一个 Storyboard 中的 UITabBarController 推送到导航堆栈
问题描述
我正在尝试将一些数据推送到ViewController
另一个 Storyboard 中,但我无法正确获取顺序。
我有UITableView
一个项目列表,在选择一行后,我想将一个键传递给ViewController
另一个嵌入在UITabBarContoller
已推送到导航堆栈的情节提要中的情节。
我可以毫无问题地来回转换,问题是将数据传递到视图控制器。
我的主故事板中的表格视图代码
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 和导航控制器,试图获得正确的视图控制器,但我似乎无法让它工作。
这是主要故事板的屏幕截图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;
}
}
及其匹配的故事板
解决方案
其实,它并没有我想的那么复杂。转场目的地是 DetailsTabViewController。只需转换为那个而不是 UITabBarController (因为我的自定义类已经是 type UITabBarController
)。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let barViewControllers = segue.destination as? DetailsTabViewController {
//Do your data pass / setup here
}
}
推荐阅读
- oracle-data-integrator - Windows 服务器上的 ODI 工作室
- r - 将日期范围扩大到每个实例有一行,同时考虑剂量频率
- json - 需要将数据类型转换为 json。尝试将 json.dumps、json.loads、chnges 转换为字符串而不是 json 类型
- encryption - 从 EWS 读取受 O365 保护的邮件?
- typescript - 使用动态字符串为允许的枚举值键入保护?
- bash - 用于备份过滤目录的 Shell 脚本
- android-studio - 落柱房间迁移android
- c++ - 通过辩论的区别
- postgresql - PostgreSQL - 错误:“;”处或附近的语法错误 结尾; 在 IF-ELSE IF 代码中
- bash - 我想编写一个在多个新终端中启动命令的 bashrc 别名