2011-05-24 69 views
0

我想更改SMS控制器的默認標題。我如何做到這一點... 嘗試所有正常的東西不起作用。任何人都知道如何以正確的方式做到這一點?如何更改MFMessageComposeViewController的標題?

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

模式視圖控制器不要」 t默認使用navigationItem。我認爲你最好的選擇是通過controller.views子視圖和它們的子視圖等循環,並從那裏檢查[子視圖是KindOfClass:[UINavigationBar類]]或者甚至是[subview respondsToSelector:@selector(setItems :)]你可以設置項目as subview.items = [NSArray arrayWithObject:navigationItem];顯然navigationItem將由你設置;) – mackross 2011-05-25 16:29:50

回答

0

我不認爲你可以改變一個MFMailComposeViewController實例的標題。 (我自己也經歷過這個)。不幸的是,這個問題成爲了標題,這是課程本身才能實現的。似乎也沒有辦法打敗這種情況。

遍歷子視圖以查找導航項目可能有效,但不能保證MFMailComposeViewController的實現和子視圖層次在未來的iOS版本中不會更改。所以如果你選擇遍歷樹,你可能會破壞你的應用程序。即使如此,你可能無法影響標題(如果說,該屬性是隻讀)。

+1

我想我必須去默認標題然後。但是我發現它使用本地化。在信息列表中添加「本地化的資源可以混合使用:是」,至少使它變得更好。 – Lollertits 2011-05-26 13:09:39

-2

是的,你可以。由於MFMessageComposeViewController繼承自UINavigationController,它也具有屬於「UINavigationBar」類的「navigationBar」屬性,並且在「UINavigationBar」類中有一個「topItem」屬性,其類爲「UINavigationItem」。 「topItem」是UINavigationController中當前顯示的項目。因此,您可以對「topItem」執行一些自定義操作,例如更改「標題」,「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"; 

相關文件蘋果Referece

UINavigationController

UINavigationBar

UINavigationItem

它可以幫助!你可以試試!

+3

這是否已經過測試,因爲它不適合我。 – guptron 2013-12-01 22:11:37

1

我不能拿到冠軍改變,但如果你想隱藏標題,就可以使文本顏色透明:

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

來源:can we change MFmessagecomposeViewcontroller navigtion title font

相關問題