Не думаю, что вам нужно проходить через все это.
С Документы :
If you present several modal view controllers in succession, and thus build a stack of modal view controllers, calling this method on a view controller lower in the stack dismisses its immediate child view controller and all view controllers above that child on the stack.
Попробуйте вызвать [self dismissModalViewController:NO]
из родительского контроллера представления в вашей реализации - (void) viewDidUnload
.
Это не проверено, но документы подразумевают, что он должен выполнить эту работу за вас.