Ho tre controller di visualizzazione (VC1, controllore vista padre e controller vista bambino). Come posso passare i dati dal VC1 al controller di visualizzazione figlio quando viene caricato il ParentVC? Normalmente avrei poter utilizzare questo nel primo controller VistaPassare i dati da View Controller a Controller bambino in Swift
var text = "Hello"
var sVC = SecondViewController()
sVC.string = text
e sarebbe passare Hello
alla variabile string
nel secondo controller della vista. e poi fare la stessa cosa per passare i dati dal secondo controller di visualizzazione al terzo. Ma sfortunatamente, questa logica non funziona. Ho provato a passare i dati da VC1 a ParentVC poi a ChildVC. Ho anche provato a passare i dati da VC1 direttamente a ChildVC ma non sembra funzionare neanche.
Ecco quello che ho
import UIKit
class ViewController1: UIViewController {
var a = "Test"
override func viewDidLoad() {
var pVC = ParentViewController()
pVC.a = a
}
}
Sono in grado di passare i dati alla Capogruppo View Controller e stampe Test
ma non è così per il Bambino View Controller
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)
}
}
E in il controller Child View che ho:
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)
}
Che cosa significa 'cvC' nel codice? – Leo
Dovrebbe essere una variabile. Lo modifico –
Si stanno creando nuovi controllori ogni volta.'ChildViewController' crea un nuovo' ParentViewController' quando la vista è caricata e 'ParentViewController' crea nuovamente' ChildViewController' nel metodo 'test' e' viewDidAppear' di nuovo, ma si passa solo la proprietà 'a' nel metodo' test' , che non fa nulla con il controller figlio. – redent84