从Swift View Controller将数据传递给Objective-C View Controller

时间:2016-08-28 01:41:22

标签: ios objective-c swift xcode

我正在尝试使用以下代码将数据从Swift View Controller(viewControllerA)传递到Objective-C View Controller(viewControllerB):

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "ViewControllerB") {

        var navController : UINavigationController! = UINavigationController()

        navController = segue.destinationViewController as! UINavigationController

        let viewControllerB : ViewControllerB! = ViewControllerB()

        viewControllerB.navigationController?.topViewController

        // Not sure how to alloc init code in an Objective-C Class in Swift file

        viewControllerB.dictionaryB = [NSObject : AnyObject]()
        viewControllerB.arrayB = [AnyObject]()

        viewControllerB.dictionaryB = self.dictionaryA
        viewControllerB.arrayB = self.arrayB

    }
}

调用prepareForSegue后,我的属性(dictionaryB& arrayB)将出现null。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您获取目标VC navController,但之后不执行任何操作。

代码然后创建ViewControllerB,分配dicts&数组到它,但后来对viewControllerB没有任何作用,所以它只是在这个方法的末尾被释放(从我从发布的代码中可以看出来)。

还有一行viewControllerB.navigationController?.topViewController似乎无能为力。

我猜你希望做的事情如下:

viewControllerB.navigationController?.topViewController = viewControllerB

但那不会编译;你真的需要:

navController.viewControllers = [viewControllerB].