2011-11-28 43 views
2

從tableview中我想呈現一個MFMailComposeViewController。我不想使用presentModalViewController:animated:方法,而是使用視圖控制器,因此它與此表視圖中的其他動畫一致。如何推送MFMailComposeViewController? (iOS 5)

因爲MFMailComposeViewController是一個UINavigationController,推動導航控制器,不支持,我用:

[[self navigationController] pushViewController:[mailComposer topViewController] animated:YES]; 

這個工作,但是當我點擊取消按鈕,它給出了警告:

出席情況由其超級視圖剪輯的操作表單。某些控件可能不會響應觸摸。在iPhone上嘗試 - [UIActionSheet showFromTabBar:]或 - [UIActionSheet showFromToolbar:]而不是 - [UIActionSheet showInView:]。

UIActionSheet底部的取消按鈕不響應觸摸。有誰知道是否可以推送一個MFMailComposeViewController?

+1

你已經回答了你的問題使用-presentModalViewController:animated: - _MFMailComposeViewController是一個UINavigationController,推動導航控制器不supported_ – beryllium

+0

,但你可以把MFMailComposeViewController的UIViewController。或者這不被支持? – Marco

+0

您的代碼推送UIViewController(topViewController返回它)。這是一種正常的行爲。 – beryllium

回答

5

作爲模態視圖呈現MFMailComposeViewController與Apple的HIG一致。將它推到導航堆棧上不是。 (如果在執行上的iOS 5或更高或-presentViewController:animated:completion:

+0

感謝您的回答。好的,所以沒有辦法讓MailComposer從右到左動畫?這個動畫不被支持似乎有點奇怪。我認爲用戶不明白爲什麼「發送電子郵件」功能會從頂部進行動畫顯示,並且此桌面視圖中的所有其他功能都是從右到左推動的。 – Marco

+1

你也可以使用'UIModalTransitionStyleFlipHorizo​​ntal'。否則,從左到右的過渡用於指示用戶正在深入到信息層次結構中。呈現郵件作曲者的目的是成爲「行動中的絆腳石」,並打算成爲一種模態行動。從自包含的「UINavigationController」組件獲取視圖控制器層次結構是蘋果公司改變它的行爲或結構後應用程序中損壞的應用程序的收據。 – gschandler

+2

爲了將來的知識,'presentModalViewController:animated:'已被Apple棄用,所以您應該使用'presentViewController:animated:completion:'來代替。 – 2012-09-24 11:10:58