Представление ModalViewController внутри ModalViewController

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

+(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 ответа

Решение

First, I would suggest checking that your appDelegate.pin пусто и не ноль. Если это ноль, оператор if не будет удовлетворен, и ваш второй ModalView не будет представлен.

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

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

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

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

Другие вопросы по тегам