2012-09-08 226 views
10

在我的應用程序中,我有一個帶有表格視圖的導航控制器,當按下按鈕時,一個標籤控制器打開。在第一個標籤中,我想要設置導航欄的標題。在標籤欄控制器內設置導航欄的標題

這是我的故事板的圖像,只是爲了確保我們相互對抗。

enter image description here

這是我的代碼,應該是工作。當我試圖打開一個視圖而不是一個標籤控制器,並且它正常工作時,我已經使用了這個代碼。所以我想我必須改變一些東西。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
     SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]]; 
     myDetViewCont.ski_center = [centers objectAtIndex:indexPath.row]; 
     UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
     [[self navigationController] pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"SkiCenterIds"] animated:YES]; 
     //[self.navigationController pushViewController:myDetViewCont animated:YES]; // "Pushing the controller on the screen" 
     [myDetViewCont release]; // releasing controller from the memory 
     myDetViewCont = nil;   
    } 

哪裏Skicenter是類我的第一個選項卡,SkiCenterIds的名字是我的故事板標籤控制器的標識符。

守則Skicenter .M是:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    self.navigationItem.title = ski_center;   
} 

,但我沒有看到任何頭銜。那麼我做錯了什麼? 我還試圖這樣:

[self.navigationController setTitle:@"Live"]; 

self.title=ski_center; 

的ski_center具有價值,因爲它是在正常的NSLog打印出來。

+0

您使用的導航控制器內的標籤欄控制器? –

+0

是的,他這樣做 – Fab1n

回答

1

基本上我不知道你是否注意到我以前不,但我得到了它是這樣工作的:

我指定我的標籤欄控制器的新類。

我做了以下內容:

它添加到應用delegate.h

​​

它添加到mainmap.m

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    delegate.center=[centers objectAtIndex:indexPath.row]; 

mytabbarcontroller.m

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    ski_center=delegate.center; 

    self.navigationItem.title = ski_center; 
5

好只是讓你知道,這是非常不好的做法,把UITabBarControllerUINavigationController - 蘋果建議您只應該永遠把UINavigationControllerUITabBarController,而不是倒過來良好的UI設計。無論如何,你應該可以像這樣改變UITabBarController的標題;

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    [[self.navigationController.viewControllers objectAtIndex:0] setTitle:ski_center];   
} 

這應該工作。

+0

不工作。導航欄沒有標題。 – ghostrider

+0

我已經更新了我的答案,請看看是否有效。 – Wasim

+0

它也沒有工作。你建議我做什麼?我嘗試過這種結構,因爲從表格中我想打開一個標籤菜單,而不是打開的第一個屏幕作爲標籤。 – ghostrider

1

試試這個:

[self.navigationController setTitle:@"Live"]; 
+0

它沒有工作。導航欄沒有標題。 – ghostrider

12

添加到ghostrider的解決方案,在mytabbarcontroller.m self.navigationItem.title沒有爲我工作。我有一個NavigationController,其詳細視圖是一個TabController,這是我在我的第一個標籤實現中的東西

self.navigationController.visibleViewController.title = ski_center; 
+0

這是爲我工作的唯一解決方案。我設置 - UITabbarController(這是根視圖控制器)內的UINavigationControllers。不知何故,所有其他明顯的解決方案根本無法工作。 – Ingweland

+0

這應該是正確的答案。做得很好。謝謝您的幫助。 –

32

簡單!

[self.tabBarController setTitle:@"Title"]; 
+0

標題文本在視圖控制器之間切換時消失 –

2
UITabBarController *tabController = (UITabBarController *)self.parentViewController; 

tabController.navigationItem.title = @"ABC"; 

這是爲我工作

從一些[R & d互聯網

上你必須通過navigationItem環比上漲。 UINavigationController顯示屬於它的topViewController的navigationItem,它是UITabBarController。 UITabBarController在其選項卡中顯示navigationItem標題。所以,你需要做的是確保該tabBarController的navigationItem是它的selectedViewController的navigationItem

因此,要回顧:

UINavigationController的標題= topViewController.navigationItem.title

的UITabBarController tabTitle = selectedViewController .navigationItem.title

UIViewController title = navigationItem.title

1

在SWIFT 3

self.tabBarController?.navigationItem.title = "Your title goes here" 
相關問題