Просто догадка, но мне показались странными следующие строки:
[[self parentViewController] presentModalViewController:controller animated:YES];
и
[[self parentViewController] dismissModalViewControllerAnimated: YES];
Правда, я не знаю, как вы расположили контроллеры представлений, но не немного ли необычно напрямую ссылаться на [self parentViewController]? Вы сильно связываете три контроллера представления (вызывающая сторона, родитель и модальное представление); это препятствует повторному использованию контроллера кода / представления (например, если вы хотите повторно использовать один и тот же контроллер представления в другой иерархии представлений в другом месте приложения).
Единственная причина, по которой я могу представить, что вы можете захотеть сделать это, заключается в том, что родителем является UINavigationController / UITabBarController, и поскольку это вид сверху, вы хотите, чтобы этот контроллер представления представлял модальный.
В этом случае я использую:
[[self navigationController] presentModalViewController:controller animated:YES]
Или, что еще лучше, в ситуации с панелью вкладок мой корневой контроллер регистрирует наблюдателя, прослушивающего уведомления, а затем все модалы запускаются из корневого контроллера представления.
Могу ли я получить немного больше информации о вашем стеке представлений? Кроме того, не могли бы вы попробовать один раз просто вызвать «я» вместо родителя и посмотреть, что произойдет?