2016-11-05 2 views
0

Я попытался передать значение между viewControllers. Но проблема в том, что значение всегда равно нулю.Передающее значение дает нуль, даже если значение действительно существует

В firstVC я:

// Create a custom view controller 
let ratingVC = RatingViewController(nibName: "RatingView", bundle: nil) 

// Create the dialog 
let popup = PopupDialog(viewController: ratingVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true) 

ratingVC.selectedTestString = "HELLO" 


// Present dialog 
self.present(popup, animated: true, completion: nil) 

И в secondVC:

var selectedTestString: String! //Unwrapping because I know value does exist 

override func viewDidLoad() { 
     super.viewDidLoad() 
    print(selectedTestString) //Gives nil 

    } 

Я делаю это первый раз с .xib, но я думаю, что концепция должна быть такой же.

+0

может быть, есть что-то вроде слабых и сильных в Obj-C – SeanChense

+1

вы можете попробовать сделать '' ratingVC' в var' от 'let'. Возможно, ему придется что-то сделать, когда копия «ratingVC» передается не ссылкой (функциональное программирование типа Swift). Или лучше установить значение перед созданием 'popup' – MjZac

ответ

4

Задайте значение selectedTestString перед созданием диалогового окна, которое поможет решить проблему.

// Create a custom view controller 
let ratingVC = RatingViewController(nibName: "RatingView", bundle: nil) 

ratingVC.selectedTestString = "HELLO" 

// Create the dialog 
let popup = PopupDialog(viewController: ratingVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true) 

// Present dialog 
self.present(popup, animated: true, completion: nil) 
+1

@Tarvo Чтобы добавить дополнительные разъяснения. Передача 'ratingVC' в' PopupDialog init' приводит к вызову 'viewDidLoad'. Поэтому установка 'selectedTestString' после создания' PopupDialog' слишком поздняя. Вы бы поняли это, если использовали отладчик и задали соответствующие контрольные точки. – rmaddy

+0

действительно помог мне !! –

Смежные вопросы