Представление ModalViewController внутри ModalViewController - PullRequest
0 голосов
/ 23 августа 2011

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

+(void)presentCredentialsViewController:(UIViewController *)vc{
    CredentialsViewController *cvc = [[CredentialsViewController alloc] init];
    [vc presentModalViewController:cvc animated:FALSE];
}

, а затем в CredentialsViewController

-(void)viewDidLoad{
    [super viewDidLoad];
    if([appDelegate.pin isEqualToString: @""]){
        UserPrefsViewController *upvc = [[UserPrefsViewController alloc] init];
        upvc.cancelButton.hidden = true;
        [self presentModalViewController:upvc animated:FALSE];
    }
}

Но по какой-то причине это не работает.Отладчик просматривает код без ошибок, тем не менее, второй контроллер модального представления не отображается.

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Во-первых, я бы посоветовал проверить, что ваш appDelegate.pin пуст, а не ноль.Если это ноль, оператор if не будет выполнен, и ваш второй ModalView не будет представлен.

Вы также можете попробовать предыдущее предложение, позвонив по номеру presentModalViewController из viewDidAppear или установив задержку.если оставить его в viewDidLoad.Возможно, что CredentialsViewController пытается представить второе представление, когда оно еще не представило себя.

0 голосов
/ 24 августа 2011

Оператор if выполняется, и второй PresentModalViewController выполняется без ошибок, но он просто не отображается.Я попытался поместить код в ViewDidAppear, а также загрузить другие места, такие как applicationWillBecomeActive и т. Д. Несмотря на то, что на самом деле код не разбился, все же ни один из этих подходов не показал бы контроллер представления.В конце концов я выбрал это:

start with pin of @""
on applicationDidEnterBackground check if pin has been set
if yes
PresentModalViewController: PinViewController
if no
do nothing

Немного взлома, но это будет делать пока.Я полагаю, что я должен поместить какое-то уведомление где-нибудь, предупреждающее, что пин-код не был установлен.Предположение о задержке может сработатьЯ мог бы попробовать в будущем.Спасибо, ребята .... указывает вверх!

...