iPhone, Obj-C, Как я могу использовать в приложении электронную почту от нажатия кнопки на листе действий при использовании addSubview? - PullRequest
0 голосов
/ 24 февраля 2011

Несколько месяцев назад я нашел отличный пример кода, чтобы добавить кнопку представления в представление, позволяющее отправлять электронные письма внутри приложения ...

http://blog.mugunthkumar.com/coding/iphone-tutorial-in-app-email/

Однако я хочу иметь возможность показывать электронную почту, обрабатывать ли ее для использования с любым из моих просмотров. У меня есть стандартный класс / метод для отображения таблицы действий, поэтому я могу использовать его во всех своих представлениях.

Это код другой кнопки в моем классе.

-(UIViewController *)showHelpClickButtonAtIndex:(int)buttonIndex:(UIView *)
      vw:(UIViewController *)vc:(BOOL)useNav:(HelpPage)page{

if (buttonIndex == CommonUIInfoHelpPagesBtnIdx) {
vc = [[HelpViewController alloc] initWithNibName:@"HelpView" 
         bundle:nil onPage:page];
   [vw addSubview:vc.view];
   return [vc autorelease]; 

Вот пример кода, без каких-либо моих многочисленных попыток заставить его работать ..

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:titleText.text];
NSString *emailBody = @"Whatever";
[picker setMessageBody:emailBody isHTML:YES]; 
picker.navigationBar.barStyle = UIBarStyleBlack; 
[self presentModalViewController:picker animated:YES];
[picker release];

В основном это MFMailComposeViewController и замените presentModalViewController на addSubview, где у меня проблемы.

Кто-нибудь может указать мне правильное направление?

1 Ответ

2 голосов
/ 25 февраля 2011

В соответствии с документами для MFMailComposeViewController:

Чтобы отобразить представление, управляемое этим контроллером представления, вы можете использовать любой из стандартных методов отображения контроллеров представления.Однако наиболее распространенный способ представления этого интерфейса - сделать это модально, используя presentModalViewController: animated: method

Первое предложение говорит нам, что вы должны показать контроллер представления для составителя писем в одномиз обычных способов;добавление представления контроллера представления в качестве подпредставления к существующему UIView, если это то, что вы пытаетесь сделать, не является одним из стандартных способов, которыми Apple хочет, чтобы вы использовали, и поэтому может не работать или не работатьнепредсказуемо.

С этим связан совет Apple, согласно которому UIViewController должен отвечать за отображение всей части вашего пользовательского интерфейса, а не только его части, что, по-видимому, противоречит вашему подходу.

Таким образом, решение состоит в том, чтобы представить почтовый компоновщик, как обычный контроллер представления: модально, или помещенный в стек навигации, или представленный как вид сверху под UIWindow и т. Д.

...