2017-02-11 22 views
0

Картина является просто примером ...Передача данных на определенной ViewController

enter image description here

Поэтому в основном я хочу передать данные из RED в СИНИЙ но я должен пройти через GREEN .. есть способ просто передать данные прямо на BLUE без необходимости проходить через GREEN?

Что я делаю сейчас является обычным методом прохождения данных в ЗЕЛЕНЫЙ затем с ЗЕЛЕНЫЙ прочитать его и передать его на СИНЕГО

Но мое приложение имеет много ViewControllers, и я хочу иметь возможность передать его прямо на последнюю страницу (BLUE страница) есть ли способ? Извините, что я новичок в Swift

+0

Отметьте этот ответ. Я не мог объяснить это лучше этого. http://stackoverflow.com/a/15839298/7188985 –

ответ

1

Если вы попытаетесь передать данные с _Red на _Blue, без _Green - это о плохой архитектуре, потому что если что-то изменилось в логике приложения, и вам нужно изменить поток контроллеров - вы будет чувствовать себя много головной боли ...

вы можете обернуть свои данные в объекте и пройти через или вы можете сделать DataController, который будет управлять данными, и ваш ViewController's будет get\set его Datacontroller интерфейсом

0

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

import Foundation 

class SharedClass { 
    static let sharedInstance = SharedClass() 
    var phoneNumber = "" 
} 

Чтобы установить переменную

SharedClass.sharedInstance.phoneNumber = "123456" 

Чтобы получить переменную

BLUEViewController.phoneNumber = SharedClass.sharedInstance.phoneNumber 
0

Вы можете нажать ваш navigationController непосредственно к одному из ваших viewControllers. Попробуй это;

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
if let blueController = storyboard.instantiateViewController(withIdentifier: "BlueViewController") as? BluewViewController { 
     blueController.passedData = passedData 
     navigationController?.pushViewController(blueController, animated: true) 
    } 

Или вы можете просто представить его тоже. Вместо того, чтобы нажимать навигационный контроллер.

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
if let blueController = storyboard.instantiateViewController(withIdentifier: "BlueViewController") as? BluewViewController { 
     blueController.passedData = passedData 
     present(blueController, animated: true, completion: nil) 
    } 
+0

urmm, но поток приложения должен по-прежнему быть RED GREEN BLUE. Я просто хочу передать определенные данные от RED прямо к BLUE. – ducklol

+0

Ну, я не подумайте, что есть прямой способ сделать это. Поскольку представления должны быть загружены для заполнения их свойств. Возможно, вы можете обернуть свои данные в объект. Но взгляды все равно должны быть загружены. –