我有三个视图控制器(VC1、父视图控制器和子视图控制器)。当 ParentVC 被加载时,如何将数据从 VC1 传递到子视图控制器?通常情况下,在第一个视图控制器中我可以使用此方法。
var text = "Hello"
var sVC = SecondViewController()
sVC.string = text
我需要翻译的内容与IT技术有关。需要将Hello
传递到第二个视图控制器中的变量string
,然后执行相同的操作将数据从第二个视图控制器传递到第三个视图控制器。但不幸的是,这个逻辑不起作用。我曾尝试将数据从VC1传递到ParentVC,再传递到ChildVC。我也尝试过直接将数据从VC1传递给ChildVC,但都不起作用。
以下是我的代码:
import UIKit
class ViewController1: UIViewController {
var a = "Test"
override func viewDidLoad() {
var pVC = ParentViewController()
pVC.a = a
}
}
我可以向父视图控制器传递数据并打印Test
,但是对于子视图控制器则不行。
import UIKit
class ParentViewController: UIViewController {
var pageMenu: CAPSPageMenu?
var a = ""
func test() {
var cvC = ChildViewController(frame: self.view.frame)
cvC.a = a
}
override func viewDidLoad() {
println(a)
}
override func viewWillAppear(animated: Bool) {
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// MARK: - Scroll menu setup
// Initialize view controllers to display and place in array
var controllerArray : [UIViewController] = []
var controller1 : ChildViewController = ChildViewController(nibName: nil, bundle: nil)
controller1.title = "View Controller"
controllerArray.append(controller1)
// Initialize scroll menu
pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 65, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)
self.view.addSubview(pageMenu!.view)
}
}
在子视图控制器中,我有以下内容:
import UIKit
class ChildViewController: UIViewController {
var a = ""
convenience init(frame:CGRect){
self.init(nibName: nil, bundle: nil)
self.view.frame = frame
}
override func viewDidLoad() {
var pVC = ParentViewController()
pVC.test()
println(a)
}
cvC
是什么意思? - LeoChildViewController
在加载视图时会创建一个新的ParentViewController
,而ParentViewController
则会在test
方法和viewDidAppear
中再次创建新的ChildViewController
,但你只在test
方法中传递了a
属性,这对子控制器没有任何作用。 - redent84ChildViewController
? - Pablo Picasso