2015-08-07 2 views
3

Я создаю учетную запись пользователя с 5 шагами, используя раскадровку. На каждом шаге есть ViewController: 1º) Вход для имени, контакта и т. Д., 2º) Импорт фотографий, 3º) Вход и т. Д. 4º) Дополнительные входы 5º) Страница подтверждения, если пользователь нажимает «подтвердить» -> Получить все входы и загрузить синтаксический.Передача данных между segues без использования PrepareForSegue

Единственное решение я получаю, когда я поиск в Интернете для этого, чтобы создать Func «Prepare для Segue» и передать информацию ... Но для меня это не делает никакого смысла:

Если я имел 1000 viewcontrollers, первая информация о просмотре будет передана через все 1000 контроллеров просмотра? Почему контроллер nº1000 не получил всю информацию, которая осталась позади? например: Viewcontroller nº50 не нужна информация о viewcontroller nº1 ... Это вздор.

Есть ли другой способ реализовать это?

Может быть, есть решение, так как я использую Разбор как когда я делаю:

ParseClass [ «Name»] = textfield.text

Он посылает информацию Разобрать и они держат ее, пока я не делаю что-то вроде SaveInBackground().

Я пытаюсь найти такое решение, используя viewcontrollers. Каждый диспетчер просмотра отправляет информацию для разбора и хранения информации до тех пор, пока «saveinbackground()» не появится на Viewcontroller nº5.

Возможно? спасибо

+0

действительно хороший вопрос. должен искать, чтобы найти об этом –

ответ

5

Да, это возможно. Вы можете использовать NSUserDefaults для хранения вашей информации в памяти, и как только она будет сохранена, вы сможете использовать ее в любом месте вашего проекта.

Как вы можете хранить значение с ней таким образом:

NSUserDefaults.standardUserDefaults().setObject(yourObject, forKey: "yourKey") 

Теперь вы можете retrive эту информацию из любой точки с yourKey так:

let yourInstance = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") 

И вы можете бросить его типа в соответствии с ваша потребность.

Для получения дополнительной информации прочитайте Apple Document for NSUserDefaults.

Еще один способ передать значение из одного вида в другой вид без выделения с помощью Class или Struct.

Вы можете узнать больше о Classes и Structures от Apple Documentation.

+2

Я бы настоятельно рекомендовал использовать NSUserDefaults для обычных данных приложения и использовать класс модели, как предлагает @Johnykutty. – Luke

+0

Я обновил свой ответ. :) @Luke –

0

Попробуйте.

let yourInstance = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") 
NSUserDefaults.standardUserDefaults().synchronize() 
1

Если наши входы конечны, создать класс модели со свойствами для него ех:

@interface UserDataInput : NSObject 
@property (nonatomic)NSString *name; 
@property (nonatomic)NSString *contactNumber; 
.... 
blah blah bla 
.... 
@end 

затем сделать его как класс одноплодной

@implementation UserDataInput 
+ (instancetype)sharedInstance { 
    static dispatch_once_t onceToken; 
    static UserDataInput *sharedInstance = nil; 
    dispatch_once(&onceToken, ^{ 
     sharedInstance = [[[self class] alloc] init]; 
    }); 
    return sharedInstance; 
} 
@end 

Затем установите свойства от точки зрения контроллер при выходе из этого контроллера вида, например,

UserDataInput *sharedInput = [UserDataInput sharedInstance]; 
sharedInput.name = self.nameField.text; 
etc.... 

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

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