2009-04-07 68 views
4

我正在使用Xcode Utility模板。在rootViewController.m有,設置了什麼就是所謂的FlipSideView導航欄的一部分:以編程方式更改導航欄標題

(SNIP)

UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"]; 

(中略)

你怎麼能編程方式從內部改變導航欄標題FlipsideViewController類?我試過了:

self.navigationItem.title = @"XXXXXX"; 

沒有成功。

回答

4

你什麼時候打這個電話?我在ViewDidLoad方法中調用相同的行,並且它工作正常。

- (void)viewDidLoad { 
    self.navigationItem.title = @"Test"; 
    [super viewDidLoad]; 
} 

你是如何展示你的觀點的?下面是我的ViewControllers(的tableView)之一提出了其他(的DetailView)

​​
+1

我在viewDidLoad和viewWillAppear中都試過。沒有快樂:( – Alan 2009-04-07 21:44:08

+0

你是否設置了它作爲一個IBOutlet? – Alan 2009-04-07 21:54:14

0

傑西的答案應該工作,但是因爲你還是有問題,第一點要檢查的一個是參考navigationItem 。

嘗試使用該行上的斷點調試您的應用程序,並檢查參考。最有可能的是,這次調用並沒有發生,因爲參考文獻是零。

0

如果您的引用爲零,請檢查您在IB的連接。

0

IIRC,UIViewController的每個子類都有一個'標題'屬性,用於保存顯示在導航欄標題中的文本。因此,在-viewDidLoad中設置self.title = @"Foobar";或在-viewWillAppear:animated中設置self.title = @"Foobar";即可。

8

好的,我花了一些時間,因爲我想使用實用程序模板應用程序的NIB佈局的便利性,但我希望能夠國際化而不需要維護巨大的筆尖。

所以,第一件事就是添加到FlipViewController類:從導航欄

IBOutlet UINavigationBar *navBarItself;

然後,在IB,控制拖拽到文件的所有者,並連接到navBarItself在文件的所有者。

然後,代碼:

- (void) viewWillAppear:(BOOL) animated { 

    [super viewWillAppear:animated]; 

    navBarItself.topItem.title = @"Peace!!"; 
}

這似乎像一個魅力

工作(當加入到viewDidLoad中它也可以)這裏顯示

(PS其他的答案做不適用於我)

0

您可以設置FlipSideViewController的標題在導航控制器中設置標題,而FlipSideViewController爲pViewController。在FlipSideViewController:

self.title = "Flip Side"; 

我不知道這個項目究竟是如何佈局,但我認爲這是你在說什麼。

相關問題