2009-10-08 12 views
55

Tôi làm điều này trong một UIViewController cho một trong các tab của tôi:self.title đặt điều hướngĐiều khiển và tiêu đề tabBarItem? Tại sao?

self.title = @"Welcome"; 

Tuy nhiên, nó ghi đè lên bất cứ điều gì tôi có cho tabBarItem. Tôi đã thử:

self.tabBarItem.title = @"Home"; 

[self.tabBarItem initWithTitle:@"Home" image:[UIImage imageNamed:@"iconHome.png"] tag:0]; 

Nhưng vẫn còn, self.title ghi đè tabBarItem, bất kể tôi đang cố gắng hai mảnh sau mã sau danh hiệu đã được thiết lập. Mã thậm chí chạy mà không có lỗi, nhưng self.tabBarItem.title hoặc initWithTitle không làm gì cả?

Trả lời

160

OK, I figured it out! Đây là những gì tôi đang làm:

self.title = @"Title for TabBarItem"; // TabBarItem.title inherits the viewController's self.title 
self.navigationItem.title = @"Title for NavigationBar"; 

các navigationBar sẽ kế thừa self.title, trừ trường hợp thiết lập sử dụng self.navigationItem.title

+0

Tôi đã chạy vào chính xác cùng một vấn đề khi sử dụng một UINavigationController trong một UITabController. Điều này giải quyết nó. –

+3

không biết bạn, nhưng doesnt làm việc cho tôi: ( – cV2

+0

Điều này làm việc cho tôi.Điều tuyệt vời cho việc thay đổi chỉ tiêu đề hàng đầu dựa trên nội dung ngay cả khi bộ điều khiển xem không thay đổi – lilbyrdie

0

Hãy thử:

[self setTitle:@"Welcome"]; 

UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Home" image:[UIImage imageNamed: image] tag:0]; 
[self setTabBarItem:item]; 
[item release]; 
+0

Hmm. Không hoạt động. "Chào mừng" (tiêu đề cho bản thân) là luôn luôn giống nhau cho tabBar. Rất bực bội, thực sự. Tôi đã nói chuyện với một người bạn dev, người đã nói cách duy nhất anh có thể làm điều đó một cách khác nhau, là đặt tiêu đề của navigationController trong IB, và sau đó không đặt self.title trong mã. Nhưng điều đó có vẻ kỳ quặc. Nếu không có ai đi kèm với giải pháp ở đây, tôi có thể gửi báo cáo lỗi cho Apple. – runmad

+0

Bạn quan tâm đến việc thiết lập thanh tab ở đâu? Mẫu ở trên đến từ phương pháp init của bộ điều khiển của tôi. Tôi không sử dụng trình tạo giao diện cho các chế độ xem của mình (tùy chỉnh của chúng hoặc được tạo trong loadView). Đó có thể là sự khác biệt. – Kevin

+0

Vâng, tôi đang sử dụng IB, nhưng đã cố gắng để init các tab trong mỗi UIViewController (NavigationController). Tôi sẽ có một cái nhìn vào những gì sẽ xảy ra nếu tôi đặt mã trên trong một phương pháp init trong UIViewController ... – runmad

0

Tôi cũng đã phải đối mặt với cùng một vấn đề, nhưng tôi giải quyết vấn đề này như thế này. Tôi đặt tiêu đề và hình ảnh của tabBarItem ngay sau khi tôi tạo chúng trong appDelegate.

Đây là những gì tôi đã làm:

[viewController setTitle:@"controllerTitle"]; 
[[viewController tabBarItem] setTitle:@"Custome Title for tab"]; 
[[viewController tabBarItem] setImage:[UIImage imageNamed:@"tab.png"]]; 
52
//set nav item title 
self.navigationController.navigationBar.topItem.title = @"zurück"; 

này đã làm nó cho tôi: =) (không có gì ở trên làm việc)