MFMailComposeViewController navigationBar

В моем приложении есть собственный фон для панели навигации. Итак, я сделал такую ​​категорию

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect 
{
    UIImage *image = [UIImage imageNamed: @"image.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

В моем приложении мне нужно использовать MFMailComposeViewController. Я создаю это как

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

Но в документах Apple говорится, что

Важно! Интерфейс составления писем сам по себе не настраивается и не должен изменяться вашим приложением. Кроме того, после представления интерфейса вашему приложению не разрешается вносить дальнейшие изменения в содержимое электронной почты. Пользователь по-прежнему может редактировать контент с помощью интерфейса, но программные изменения игнорируются. Таким образом, вы должны установить значения полей содержимого перед представлением интерфейса.

Это означает, что я не могу использовать свой «image.png» в качестве фона панели навигации для контроллера представления почтового композитора.

Как этого добиться?

Спасибо


person user1078065    schedule 28.01.2012    source источник


Ответы (1)


Попросту говоря, использовать стандартный яблочный MFMailComposeViewController нельзя. Обычно вы представляете его модально, чтобы он в любом случае полностью перекрывал ваш вид.

Если вам нужен составной лист нестандартного вида, вам придется создать его как настраиваемый контроллер с настраиваемым представлением. Вам также понадобится либо почтовый сервер, встроенный в ваше приложение, либо сервер, на который вы можете отправить почту за вас.

По соображениям безопасности Apple ограничивает то, что вы можете делать с MFMailComposeViewController.

Если я могу быть более полезен, пожалуйста, спросите :)

person George Green    schedule 28.01.2012
comment
Image.png находится на панели навигации mailComposer. Я хочу избавиться от этого - person user1078065; 28.01.2012
comment
Извините, возможно, я неправильно это понял. Значит, он у вас уже установлен на контроллере ..? Если это так, то да, вам придется прекратить это делать перед отправкой, так как вы, скорее всего, получите отказ. Хотя то, что я сказал о создании индивидуального, все еще должно быть в силе. - person George Green; 28.01.2012
comment
Да, действительно так. Оглядываясь назад на то, как вы это делаете, вы можете сойти с рук. Но вам решать, стоит ли рисковать. Извини, я ничем не мог больше помочь. - person George Green; 28.01.2012
comment
Как изменить категорию только для этого экрана? - person user1078065; 28.01.2012
comment
Что ж, не очень-то просто. В вашей категории вы должны иметь возможность получить navController для вашего navBar. Будет что-то вроде self.navigationController. Тогда вы сможете поставить контроллер на вершину стека. Затем проверьте его класс [self.navigationController.topViewController class] == [MFMailComposeViewController class], и если это правда, не устанавливайте изображение. Не самое элегантное решение, но оно должно работать. - person George Green; 28.01.2012