如何更改MFMessageComposeViewController的标题?

时间:2011-05-24 19:30:18

标签: iphone objective-c ios ios4 sms

我想更改SMS控制器的默认标题。我该怎么做呢... 尝试所有正常的东西都不起作用。任何人都知道如何以正确的方式做到这一点?

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
    ABMultiValueRef multi = ABRecordCopyValue(currentContact, kABPersonPhoneProperty);

    [controller setBody:[smsTextView text]];
    [controller setRecipients:[NSArray arrayWithObjects:(NSString*)ABMultiValueCopyValueAtIndex(multi, 0), nil]];
    [controller setMessageComposeDelegate:self];
    //Todo: Make the Title Change
    [controller setTitle:@"asd"];  
    [[controller navigationItem] setTitle:@"asd"];

    [self presentModalViewController:controller animated:YES];
}

3 个答案:

答案 0 :(得分:1)

我无法更改标题,但如果您想隐藏标题,则可以使文字颜色透明:

NSDictionary *attributes =  [NSDictionary dictionaryWithObjectsAndKeys:[UIColor clearColor],UITextAttributeTextColor, nil];
self.messageComposeVc.navigationBar.titleTextAttributes = attributes;

来源:can we change MFmessagecomposeViewcontroller navigtion title font

答案 1 :(得分:0)

我认为您无法更改MFMailComposeViewController实例的标题。 (我自己也经历过这一点。)不幸的是,主题成为了标题,并且正是这个类本身才能实现。似乎没有办法打败那个。

遍历子视图以查找导航项可能有效,但无法保证MFMailComposeViewController的实现和子视图层次结构在将来的iOS版本中不会更改。因此,如果您选择遍历树,则可能会导致应用程序崩溃。即使这样,您也可能无法影响标题(如果说属性是只读的)。

答案 2 :(得分:-2)

是的,你可以。由于MFMessageComposeViewController继承自UINavigationController,它还具有“navigationBar”属性,属于“UINavigationBar”类,而在“UINavigationBar”类中,有一个“topItem”属性,其类为“UINavigationItem”。 “topItem”是UINavigationController中当前显示的项目。因此,您可以对“topItem”执行一些自定义操作,例如更改“title”,“leftBarButtonItem”,“rightBarButtonItem”等。 如下面的代码:

// set the SMS navigationBar backgroundColor
controller.navigationBar.tintColor = [UIColor redColor];
// set its title
controller.navigationBar.topItem.title = @"your new SMS title" ;
// set the Right Cancel Item's title
controller.navigationBar.topItem.rightBarButtonItem.title = @"your SMS cancel title";

关联Apple Doc Referece

UINavigationController

UINavigationBar

UINavigationItem

愿它有所帮助!你可以尝试一下!