2011-09-13 43 views
1

尽管我知道更改MFMailComposeViewController已经开始,但我冒了一个风险。 我发现了一些想法,例如更改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; 
+0

检查SO发布 http://stackoverflow.com/questions/1737848/change-title-of-mfmailcomposeviewcontroller – Jhaliya

回答

6

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

这里明确指出,你不能改变Apple提供的接口。

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

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

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

+0

感谢您的答复..我想我会坚持使用不修改任何东西:) – Alex

+0

这为什么我讨厌苹果。如果他们不能让我们定制界面,他们至少应该提供看起来不错的东西。现在我的标题看起来像“从客户端查询...”。这样一个丑陋的标题: - @ –

3

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