Objective c 将MFMailComposeViewController推送到导航堆栈上?不以形式呈现
我有一个表格视图,其中一个单元格上写着“联系人”。选择此单元格后,我想插入MFMailComposeViewController 我似乎只能以模态的方式呈现这个MFMailComposeViewController。这里有什么问题 谢谢 相关代码框架:Objective c 将MFMailComposeViewController推送到导航堆栈上?不以形式呈现,objective-c,ios,uinavigationcontroller,mfmailcomposeviewcontroller,Objective C,Ios,Uinavigationcontroller,Mfmailcomposeviewcontroller,我有一个表格视图,其中一个单元格上写着“联系人”。选择此单元格后,我想插入MFMailComposeViewController 我似乎只能以模态的方式呈现这个MFMailComposeViewController。这里有什么问题 谢谢 相关代码框架: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { MFMailComposeViewContro
- (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的一个子类,我就把一个导航控制器推到另一个导航控制器上
我希望我的UI保持一致,因此我希望将MFMailComposeViewController推送到nav堆栈上,而不是以模式显示它 根据苹果的文档 要显示此视图控制器管理的视图,可以使用任何显示视图控制器的标准技术 所以,你要做的应该是在这两种情况下都有效。你看过日志了吗
我敢打赌navigationController为零,因为这通常发生在使用普通UIViewController时(未嵌入
UINavigationController
,但如果您实际将模态视图显示在导航控制器上,它可能不是零。这是因为MFMailComposeViewController
不是UIViewController
的子类,而是UINavigationController
的子类当您试图将UINavigationController
或UINavigationController
的子类推送到现有堆栈上时,这是一个例外。允许以模式呈现UINavigationController
。以何种方式不起作用?视图只是没有呈现,或者您得到了一个错误?好的,您是说您不能吗“向下钻取”时打开MFMailComposeViewController在tableview单元格上?向下钻取的意思是,点击tableview单元格,下一个视图控制器不会从屏幕底部弹出,而是以模式显示。我希望MFMailComposeViewController从右向左滑入。确实支持这样一个基本的功能吗?UINavigationController旨在操纵UI的层次结构VisualController对象。在现有的导航堆栈中添加另一个UnavigigController会有意想不到的后果。考虑UnavigigController提供的UnavigigBar。如果您要推一个新的UnavigigController,哪个导航条应该优先?我想,如果您真的需要推送邮件COMPOS的话。通过使用mailComposeController.topViewController
,可以仅提取UIViewController子类。