2015-09-07 76 views
1

this问题一样,我需要将一个ViewController的值传递给另一个,第二个VC嵌入到导航控制器中。我试着回答这个问题,但在控制台上打印的值始终为零。无法弄清楚该怎么做。Swift 1.2 - prepareForSegue针对View Controller嵌入式导航控制器

在第一个VC,我有:

var dataToSend : String! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if segue.identifier == "toSecondVCSegue" { 

      println("prepareForSegue occurred test value is: *\(dataToSend)*") 

      let destinationNavigationController = segue.destinationViewController as! UINavigationController 
      let targetController = destinationNavigationController.topViewController as! SecondViewController 

      targetController.receivedTest = dataToSend 

     } 
    } 




    @IBAction func toSecondVCButtonTapped(sender: UIButton) { 

     performSegueWithIdentifier("toSecondVCSegue", sender: nil) 

     dataToSend = "passed" 
    } 
第二

我:

var receivedTest : String! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     println("in SecondViewController in viewDidLoad receivedTest is: *\(receivedTest)*") 

    } 

    override func viewWillAppear(animated: Bool) { 

     println("in SecondViewController in viewWillAppear receivedTest is: *\(receivedTest)*") 

    } 


    override func viewDidAppear(animated: Bool) { 

     println("in SecondViewController in viewDidAppear receivedTest is: *\(receivedTest)*") 

    } 
+0

发布后的问题我意识到,错误的按钮func的顺序,执行segue应该是最后一条语句:(现在它的工作原理!,也许你可以帮助我另一种方式,你认为我应该调用超级在viewWillAppear viewDidAppear? – biggreentree

+0

是的,super必须在那里,当你需要避免在这些方法中使用super时,会出现很少的情况,它会像super.viewWillAppear(动画) – AlexZd

+0

,但是如果我写override override func viewWillAppear(animated:Bool){ super.viewDidAppear(animated:Bool)我得到了一个错误:( – biggreentree

回答

1

我认为,原因是你调用performSegueWithIdentifier,所以它后设置值dataToSend变量保持始终为零

尝试更改您的代码为:

@IBAction func toSecondVCButtonTapped(sender: UIButton) { 
    dataToSend = "passed" 
    performSegueWithIdentifier("toSecondVCSegue", sender: nil) 
} 

这可能有帮助!

+0

想出问题之后:)但有奖金问题,你觉得我应该打个超级电话吗?在viewWillAppear viewDidAppear?怎么做? – biggreentree

+1

我不明白你的奖金问题。 – Devster101

相关问题