Прежде всего, когда вы помещаете этот код в applicationDidFinishLaunching, может случиться так, что контроллеры, созданные из Interface Builder, еще не связаны с вашим приложением (поэтому «красный» и «синий» по-прежнему nil
).
Но, чтобы ответить на ваш первоначальный вопрос, вы неправильно делаете, что звоните dismissModalViewControllerAnimated:
не на тот контроллер! Должно быть так:
[blue presentModalViewController:red animated:YES];
[red dismissModalViewControllerAnimated:YES];
Обычно «красный» контроллер должен решить отменить себя в какой-то момент (возможно, когда нажата кнопка «отмена»). Тогда «красный» контроллер может вызвать метод на self
:
[self dismissModalViewControllerAnimated:YES];
Если он по-прежнему не работает, это может быть связано с тем, что контроллер представлен в анимационной манере, поэтому вам может быть запрещено отклонять контроллер так скоро после его представления.