我正在尝试使用以下代码将数据从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。我该如何解决这个问题?
答案 0 :(得分:0)
您获取目标VC navController
,但之后不执行任何操作。
代码然后创建ViewControllerB
,分配dicts&数组到它,但后来对viewControllerB
没有任何作用,所以它只是在这个方法的末尾被释放(从我从发布的代码中可以看出来)。
还有一行viewControllerB.navigationController?.topViewController
似乎无能为力。
我猜你希望做的事情如下:
viewControllerB.navigationController?.topViewController = viewControllerB
但那不会编译;你真的需要:
navController.viewControllers = [viewControllerB].