0

У меня есть представление, которое представлено в виде модального контроллера, который принимает учетные данные пользователя и пароля. Я хочу, чтобы это представление проверяло делегат, и если пользователь ранее не установил PIN-код для разблокировки для приложения, чтобы затем показать вид вывода смены в виде контроллера модального представления. Это мой код ...Представление 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]; 
    } 
} 

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

+1

Что делать, если вы поместите этот код в 'viewDidAppear'? – Jilouc

ответ

2

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

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

0

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

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

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