ios - 通过 Segue 将数据传递到推送到导航堆栈的另一个 Storyboard中的 UITabBarController

标签 ios swift swift4

我正在尝试将一些数据推送到另一个 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

的屏幕截图

enter image description here

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

enter image description here

最佳答案

其实并没有我想的那么复杂。 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/

相关文章:

swift - 如何将 xib 中的自定义 View 添加到 UIScrollView?

ios - 在 Swift 中将数字四舍五入到小数点后两位

swift - 约束 anchor 在 Swift 4 中工作不正常

objective-c - IOS:使用自定义表格 View 单元格重新加载表格 View

objective-c - ios如何知道要加载哪个xib/nib?

ios - 权利文件与您的配置文件中指定的不匹配。(0xE8008016)

ios - Sprite Kit 所有对象只出现在屏幕的右半边

ios - 读取信用卡并在浏览器中填写表格?

ios - 通过 Storyboard有效地传递 NSManagedObject

ios - 静态方法中的 UIAlertController 给出错误 : extra argument animated in cell