Как передать данные из одного viewController в другой без использования segues? - PullRequest
0 голосов
/ 28 апреля 2018

В моем первом ViewController:

var storyboard = UIStoryboard(name: "Main", bundle: nil)
var controller = storyboard.instantiateViewController(withIdentifier: "backGroundController") as! BackGroundWithContainer
delegate?.myFunction(float: floatItryToPass)

В моем втором ВК:

let whiteView = UIView()
@IBOutlet var TopBarView: UIView!

func takeScrollUpFloat(float: CGFloat) {

    print("scrollUpFloatTaker: ", float) //works fine
    whiteView.center.y = view.frame.height //bad access error here
    TopBarView.center.y = view.frame.height //found nil error here
}

Сложность состоит в том, чтобы действительно изменить значения, которые определены во втором ViewController. Как я могу решить это без фактического вызова Segue? Я знаю, что существует множество способов сделать это при открытии представления, но я должен решить это, БЕЗ загрузки второго представления снова. Второй режим в настоящее время запущен.

1 Ответ

0 голосов
/ 28 апреля 2018

Вот как это решить

var storyboard = UIStoryboard(name: "Main", bundle: nil)
var secondController = storyboard.instantiateViewController(withIdentifier: "backGroundController") as! BackGroundWithContainer
secondController.passedFloat = floatItryToPass

Теперь в вашем втором контроллере представления

var passedFloat: CGFloat!
let whiteView = UIView()
@IBOutlet var TopBarView: UIView!

override func viewDidLoad() {

    print("scrollUpFloatTaker: ", float) //works fine
    // no bad access error here since your view is loaded, i.e viewDidLoad
    whiteView.center.y = view.frame.height 
    // all your IBOutlet variables also get values by the time viewDidLoad
    // is called, so you won't be getting nil for your TopBarView
    TopBarView.center.y = view.frame.height //found nil error here
}

Первый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...