Вставить MFMailComposeViewController в стек навигации? Не представлен модально - PullRequest
4 голосов
/ 29 октября 2011

У меня есть табличное представление, и в одной из ячеек написано «контакт».Выбрав эту ячейку, я хотел бы вставить MFMailComposeViewController.

Я могу только представить этот MFMailComposeViewController модально.В чем здесь проблема?

Спасибо!

Соответствующий фрагмент кода:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
    //*works*//[self.navigationController presentModalViewController:controller animated:YES];
    //*broken*//[self.navigationController pushViewController:controller animated:YES];

}

Ошибка, которую я получаю: "* Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Выдвижение контроллера навигации не поддерживается» * Вызов стека при первом броске: «

Так что, похоже, у меня уже есть навигационный контроллер,и поскольку MFMailComposeViewController является подклассом UINavigationController, я помещаю navController на другой navController?

Я хочу, чтобы мой интерфейс был согласованным, поэтому я хочу поместить MFMailComposeViewController в стек навигации, а не представлять его модально.

Ответы [ 2 ]

3 голосов
/ 30 октября 2011

Это потому, что MFMailComposeViewController не подкласс UIViewController, а UINavigationController. UINavigationController выдает исключение, когда вы пытаетесь поместить UINavigationController или подкласс UINavigationController в существующий стек. Представление UINavigationController модально разрешено.

0 голосов
/ 29 октября 2011

Согласно документации Apple

Чтобы отобразить представление, управляемое этим контроллером представления, вы можете использовать любой из стандартных методов отображения контроллеров представления.

Так что то, что вы пытаетесь сделать, должно работать в обоих случаях. Вы смотрели журналы?

Я бы поспорил, что ваш navigationController равен nil, потому что это обычно происходит, когда вы используете простой UIViewController (не встроенный в UINavigationController, но если вы фактически представляете свой модальный вид на navigationController, он может не быть нулевым.

...