Передача значений в UIViewController в новой раскадровке – Swift

Я пытаюсь передать значения новому контроллеру представления, расположенному в новом файле раскадровки. Однако, когда я это делаю, результат, который я получаю от NewViewController, всегда равен нулю.

Ниже показано, как я показываю контроллер представления в новой раскадровке:

// Show create account page with custom transition
var storyboard : UIStoryboard = UIStoryboard(name: StoryboardName, bundle: nil)
var vc : UIViewController = storyboard.instantiateViewControllerWithIdentifier(NewViewController) as UIViewController

Я пытаюсь отправить информацию здесь:

// Pass the delegate to the first view controller
let newViewController:NewViewController = NewViewController()
newViewController.createAccountDelegate = self
newViewController.teststring = "hello"

А затем представьте контроллер представления.

vc.transitioningDelegate = self
vc.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
self.presentViewController(vc, animated: true, completion: nil)

Вот мой NewViewController, где я пытаюсь получить значения. Однако в конечном итоге все еще равно нулю.

import UIKit

class NewViewController: UIViewController {
    var createAccountDelegate:AccountCreationDelegate!
    var teststring:NSString!

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

Я неправильно отправляю значения?


person Ryan    schedule 15.08.2014    source источник


Ответы (1)


Вы создаете новый экземпляр NewViewController с помощью этой строки

let newViewController:NewViewController = NewViewController()

Вместо этого назначьте переменные и делегируйте их vc, которые вы создали из StoryBoard.

var storyboard : UIStoryboard = UIStoryboard(name: StoryboardName, bundle: nil)
// It is instance of  `NewViewController` from storyboard 
var vc : NewViewController = storyboard.instantiateViewControllerWithIdentifier(NewViewController) as NewViewController

// Pass delegate and variable to vc which is NewViewController
vc.createAccountDelegate = self
vc.teststring = "hello"
vc.transitioningDelegate = self
vc.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
self.presentViewController(vc, animated: true, completion: nil)
person codester    schedule 15.08.2014
comment
почему это происходит, хотя раньше все работало, а теперь очень странное поведение - person Ali; 31.08.2016