更改MFMailComposeViewController的标题

时间:2011-09-13 11:26:15

标签: iphone objective-c ios

虽然我知道改变MFMailComposeViewController是有道理的,但我冒了风险。 我找到了一些想法,比如

[self presentModalViewController:controller animated:YES]; // Existing line
[[[[controller viewControllers] lastObject] navigationItem] setTitle:@"SomethingElse"];

[[[[(MFMailComposeViewController*)vc  navigationBar] items] objectAtIndex:0] setTitle:@" SomethingElse"];

但奇怪的是,标题是“SomethingElse”,持续2秒,然后返回到设置的主题。我也尝试了其他解决方案,但输出相同。

我正在使用SHK(ShareKit)连接社交。以下是showViewController的代码:

if ([vc respondsToSelector:@selector(modalPresentationStyle)])
        vc.modalPresentationStyle = [SHK modalPresentationStyle];

    if ([vc respondsToSelector:@selector(modalTransitionStyle)])
        vc.modalTransitionStyle = [SHK modalTransitionStyle];

[topViewController presentModalViewController:vc animated:YES];

 [[[[(MFMailComposeViewController*)vc  navigationBar] items] objectAtIndex:0] setTitle:@" "];



[(UINavigationController *)vc navigationBar].barStyle = 
    [(UINavigationController *)vc toolbar].barStyle = [SHK barStyle];



    self.currentView = vc;

2 个答案:

答案 0 :(得分:6)

我相信这是iOS4带来的某种保护。

此处明确指出,您不得更改Apple提供的界面。

http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

重要提示:邮件撰写界面本身不可自定义,您的应用程序不得修改。此外,在显示界面后,您的应用程序不允许对电子邮件内容进行进一步更改。用户仍然可以使用界面编辑内容,但忽略程序化更改。因此,您必须在显示界面之前设置内容字段的值。

我知道有些人因此被拒绝。我只是想警告你。

答案 1 :(得分:3)

您只需设置邮件主题即可。意味着[MFMailComposeViewController setsubject:@"yourTitle"]。然后这将显示为一个标题。但如果你没有在MFMailComposeViewController主题中写任何内容,那么默认情况下它可以显示“新消息”。