-1

I am new to swift programming and also referred many posts here, but didn't find solution to my problem. I apologise if am being stupid here

I am trying to pass data from one viewcontroller to another programatically. But even if I pass the value from class B to class A, it says nil

class A

class testA : UIViewController {
  let objectb = testB()
  var viewlet = [String]!

  override func viewDidLoad() {
    super.viewDidLoad()
    if viewlet == nil {
      objectb.ready()
    }
    else {
      let sel : Selector = NSSelectorFromString(viewlet[0])
      self.perform(sel)
    }
  }
}

class B

class testB : UIViewController {
  func ready() {
    let vc = testA() 
    vc.viewlet = ["loadpage"]       
    show(vc, sender: self)
  }
}

but in class testA, viewlet will be nil even after I am passing the value. Am I doing it wrong? or is there any other method ? Thank You for any help

Ahalya Hegde
  • 1,571
  • 2
  • 18
  • 41
  • You can see this link(Though it is in Swift 2 but you can understand :p) - http://stackoverflow.com/questions/39285588/how-to-pass-data-from-child-to-parent-view-controller-in-swift/39288232#39288232 – onCompletion Feb 08 '17 at 11:33
  • How is this program compiling? You should change var viewlet = [String]! to var viewlet:[String]! – Puneet Sharma Feb 08 '17 at 11:36

1 Answers1

0

Everytime you do TestA() or TestB(), you're creating a new copy of it. This should be what you're trying to do.

   class testA : UIViewController {
          let objectb = testB()
          var viewlet = [String]()

          override func viewDidLoad() {
            super.viewDidLoad()
               if viewlet == nil {
               objectb.vc = self
               objectb.ready()
              } else {
                let sel : Selector = NSSelectorFromString(viewlet[0])
                self.perform(sel)
              }
          }
       }

  class testB : UIViewController {
     let vc : testA?
        func ready() {
            vc.viewlet = ["loadpage"]       
            show(vc, sender: self)
          }
        }
Clinton D'Souza
  • 301
  • 2
  • 8