2010-08-01 49 views
5

我想下面的代碼:如何正確設置UIViewController的navigationController標題?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
Thing *sub = [[subscriptions objectAtIndex:indexPath.row] retain]; 
StoriesViewController *thing = [[StoriesViewController alloc] initWithThing:sub]; 
thing.navigationController.title = sub.title; 
[self.navigationController pushViewController:thing animated:YES]; 
[thing release]; 
[sub release]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

我認爲你這是怎麼正確設置標題爲推動控制器。我試過thing.title,不過那是設置TabBarItem的標題。

+0

這裏更深入的討論:http://stackoverflow.com/questions/2280710/iphone-setting-navigation-bar-title – 2012-06-11 14:59:49

回答

14
thing.navigationItem.title = sub.title; 

或StoriesViewController.m文件中viewDidLoad方法:

self.navigationItem.title = sub.title 
+0

thing.navigationItem.title不工作,我之前和之後我把試了一下ViewController沒有運氣。 – 2010-08-01 15:43:49

+0

將其設置在您的控制器的viewDidLoad方法 – jamapag 2010-08-01 19:07:31

+2

嗨,我試過self.navigationController.title = @「註冊」; 有什麼區別?它不工作 – OMGPOP 2013-05-27 05:51:00

1

標題需要(或之後)viewDidLoad進行設置,因此,如果你想從正在創建StoriesViewController另一個類設置。

  1. 使另一個屬性,並有該類設置它。
  2. 在StoriesViewController的viewDidLoad中,設置該屬性的標題。

這是因爲直到viewDidLoad,網點才被初始化爲它們的視圖對應物。

它看起來像StoriesViewController是堅持子(是否initWithThing設置一個屬性?)如果是這樣,只需將viewDidLoad中的標題設置爲Thing屬性的標題。

+0

似乎沒有工作,雖然你的推理是有道理的。 – 2010-08-01 17:11:43

0
[thing setTitle: sub.title]; 
0

的解決方案是thing.navigationItem.title = @"title";然而事實證明,繼承一個UINavigationController打破了它在某種程度上,我的解決方案,那就是使用一個類,而不是一個子類

0

如果您UIViewControllerUITabController的一部分,那麼你可以這樣做:

self.tabBarController.title = sub.title; 
1

這可能是你推UITabBarController而不是常規視圖控制器。在這種情況下,navigationItem將顯示當前控制器的標題,標籤欄控制器,即使您看到另一個視圖。您必須更改標籤欄控制器的標題才能更改上面顯示的文本。

self.tabBarController.title = @"Your title";