Форум программистов, компьютерный форум CyberForum.ru

Как из одного View Controller передать переменную в другой - Swift

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Swift Textfield деление http://www.cyberforum.ru/swift/thread1584284.html
Есть два текстфилда, нужно сделать так, что бы по нажатию кнопки введенное число в первый текстфилд делилось на число введенное во второй текстфилд, и результат выводился в отдельный лэйбл. Помогите пожалуйста
Swift Проверка качества пароля Сильно не пинайте, вторую неделю изучаю программирование. 6 проверить пароль на надежность от 1 до 5 a) если пароль содержит числа +1 b) символы верхнего регистра +1 c) символы нижнего регистра +1 http://www.cyberforum.ru/swift/thread1579044.html
Swift NSString в Int
Возможно ли вообще перейти от NSString к Int? Если да, то подскажите, каким образом?
Как ограничить ввод текста под размеры UITextField? Swift
Добрый день! Подскажите пожалуйста, как ограничить ввод текста под размеры UITextField?
Swift Как поднять UITextField над клавиатурой? http://www.cyberforum.ru/swift/thread1566220.html
Всем привет! Клавиатура перекрывает UITextField. Как его поднять над клавиатурой?
Swift Музыка на фоне Здравствуйте программисты, подскажите как можно на фон игры вставить музыку? подробнее

Показать сообщение отдельно
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
08.12.2015, 08:39     Как из одного View Controller передать переменную в другой
Цитата Сообщение от AncientPenguin Посмотреть сообщение
ну и само собой цеплять к нему глобальные переменные
ерунда, глобальные переменные - зло всея всеи, никогда этой фигней не занимайтесь
блин, вам надо просто запретить отвечать людям и давать такие туфтовые советы, вы просто вредительством занимаетесь

есть два подхода построения навигации в приложении:
1. Создание вью-контроллеров в Xib файлах и потом инициализация контроллеров в коде, куда в конструктор можно передать необходимые параметры\зависимости (называется Dependency Injection) это один из методов реализации данного шаблона - инъекция через конструктор.
Можно параметры передать в публичные переменные контроллера, который открываете, либо используя публичные методы.

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class DestinationViewController: UIViewController {
    let parameter: String
    
    init(parameter: String) {
        self.parameter = parameter
        super.init(nibName: "DestinationViewController", bundle: nil)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
 
// потом у себя в контроллере создаете и показываете его
 
let vc = DestinationViewController(parameter: "value")
presentViewController(vc, animated: true, completion: nil)
2. Создание вью-контроллеров в Storyboard-ах, там просто перегружаете метод делегата prepareForSegue:sender:
Segue - это описание переход из одного скрина на другой, у него есть имя и есть source из которого переходят, т.е. self в вашем случае и destination - куда переходят

Objective-C
1
2
3
4
5
6
7
8
9
10
// где-то там, когда нужно перейти по пути с именем MySegue, вызываете:
performSegueWithIdentifier("MySegue" sender: self)
 
// перегружаете метод и реализуете передачу параметров
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "MySegue" {
        let dest = segue.destinationViewController
        dest.parameter = "someValue"
    }
}
P.S. лично я предпочитаю создавать вью-контроллеры в xib файлах, потому что так я имею больше контроля при создании и передаче параметров. Во втором случае будет не очень удобно оперировать переходами на несколько контроллеров, т.к. в prepareForSegue:sender: прийдется паттерн матчингом перебирать все возможные переходы с source скрина и там передавать параметры только либо через публичные проперти destination контроллера либо через его публичные методы

P.P.S. на самом деле есть и третий вариант, когда можно миксовать сториборды и xib файлы или просто программное создание, но тогда каша получается и я стараюсь придерживаться одного стиля
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru