iOS: заставьте segue ждать успешного входа в систему - PullRequest
12 голосов
/ 19 ноября 2011

Я разрабатываю приложение для iOS, используя функцию раскадровки XCode 4.2.Приложение имеет экран входа в систему, который принимает имя пользователя и пароль, а также кнопку для входа в систему. Нажатие кнопки входа в систему вызывает принудительный переход к другому контроллеру представления.Тем не менее, я хочу, чтобы seque дождался успешного входа в систему, прежде чем переходить к следующему контроллеру представления.

Я знаю о prepareForSegue:sender:, но вот моя проблема: вызов входа в систему асинхронный.Поэтому я не могу выполнить вход в систему там.

Есть ли что-нибудь вокруг этого?Могу ли я создать в раскадровке секцию, которая срабатывает только тогда, когда я хочу, чтобы она была (в отличие от нажатия кнопки)?

Ответы [ 3 ]

38 голосов
/ 21 ноября 2011

Хорошо, я понял это. Я определил переход от UIButton к следующему UIViewController. Как определено таким образом, нет способа условно выполнить переход.

Вместо того, чтобы ставить переход на кнопку, я сделал переход от первого UIViewController к другому UIViewController. Это определяет переход, но не связывает с ним никаких действий. Оттуда я могу просто позвонить performSegueWithIdentifier:sender:, когда я хочу, чтобы этот переход выполнялся (в моем случае, когда асинхронная задача завершена).

Основным преимуществом этого для меня является то, что IB сохраняет свою структуру.

Большое спасибо @cli_hlt за то, что он указал мне правильное направление (+1).

5 голосов
/ 19 ноября 2011

Я не знаю, есть ли способ в IB выполнить такое действие (хотя я сильно сомневаюсь в этом), поэтому я предлагаю использовать

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

на контроллере представления, когда ваш асинхронный вход в систему сигнализирует об успехе.

1 голос
/ 30 ноября 2011

Вы также можете вызвать instantiateViewControllerWithIdentifier для экземпляра UIStoryBoard. Это вернет ссылку на контроллер вида на любую точку вашей раскадровки. Оттуда вы можете представить его так, как вам нравится, и он уловит поток вашей раскадровки.

...