iPhone App Dev - Возвращение значений от просмотра от ребенка к родителю - PullRequest
0 голосов
/ 26 июля 2011

У меня есть родительский контроллер представления, который загружает дочернее представление, используя presentmodalview. Чтобы быть точным, этот дочерний вид является страницей входа.

Страница входа имеет два текстовых поля (адрес электронной почты и пароль) и кнопку «Войти». Когда кнопка входа в систему нажата, при условии, что ввод данных действителен, я хотел бы отправить подробности пользователя корневому контроллеру представления, который затем создаст объект пользователя, если пользователь существует, или иным образом предоставит представление uialertview, указывающее пользователю, что недействительные сведения были введены.

В моем дочернем виде у меня есть следующая функция, связанная с «кнопкой входа»:

-(IBAction) signIn:(NSString*)userEmail with:(NSString*)userPassword{
    //takes text field values and instantiates a dbConnector object to 
    //check to see if user exists - must also post uialertview if user details incorrect
    NSString* uName = [email text];
    NSString* pword = [password text];
    userDetails = [[NSMutableArray alloc] initWithObjects:uName, pword, nil];
    NSLog(@"%@", userDetails);
}

Каков наилучший способ передачи массива userDetails обратно в контроллер rootview после нажатия кнопки?

РЕШЕНИЕ - Протоколы и делегаты

Ответы [ 3 ]

1 голос
/ 26 июля 2011

Создайте массив UserDeatails в ParentViewController и установите его значение при нажатии кнопки в ChildViewController.

Но вы должны создать объект ParentViewController как:

ParentViewController * parentView = [[ParentViewController alloc] initWithNibName: @ "ParentViewControllerName" bundle: nil];

parentView.userDeatails = userDetails_in_ChildView;

0 голосов
/ 26 июля 2011

Просто объявите переменную в свой файл делегата, например

String * strUsername;String * strPassword;

А также создайте свойство и синтезируйте для этого ..

, а затем создайте объект вашего делегата, где бы вы ни захотели, как этот ..

NavigationBarAppDelegate *appDelegate = (NavigationBarAppDelegate *) [[UIApplication sharedApplication] делегат];

appDelegate.strUsername = uName;appDelegate.strPassword = pword;

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

NavigationBar - это имя моего приложения.

0 голосов
/ 26 июля 2011

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

См. этот ответ . Надеюсь, что это поможет.

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