我想更改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];
}
答案 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
愿它有所帮助!你可以尝试一下!