2010-08-01 25 views
5

tôi đang cố gắng đoạn mã sau:Làm cách nào để đặt chính xác tiêu đề navigationController của UIViewController?

- (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]; 
} 

Tôi nghĩ đây là cách bạn thiết lập một cách chính xác các tiêu đề cho đẩy bộ điều khiển. Tôi đã thử thing.title tuy nhiên đó là thiết lập tiêu đề của TabBarItem thay thế.

+0

triệt để gửi thảo luận ở đây: http://stackoverflow.com/questions/2280710/iphone-setting-navigation-bar-title –

Trả lời

14
thing.navigationItem.title = sub.title; 

hoặc trong tập tin StoriesViewController.m trong viewDidLoad phương pháp:

self.navigationItem.title = sub.title 
+0

thing.navigationItem.title không làm việc, tôi đã thử nó trước và sau khi tôi đẩy các ViewController mà không có may mắn. –

+0

đặt trong phương thức viewDidLoad của contoroller – jamapag

+2

Xin chào, tôi đã thử self.navigationController.title = @ "Registration"; sự khác biệt là gì? nó không hoạt động – OMGPOP

1

Tiêu đề cần phải được đặt trong (hoặc sau) viewDidLoad, vì vậy nếu bạn muốn thiết lập từ một lớp học mà được tạo StoriesViewController .

  1. Tạo một thuộc tính khác và yêu cầu lớp đó đặt.
  2. Trong câu chuyệnViewController's viewDidLoad, đặt tiêu đề từ thuộc tính đó.

Điều này là do các cửa hàng không được khởi tạo cho các đối tác xem của họ cho đến viewDidLoad.

Dường như StoriesViewController đang giữ nguyên sub (không initWithThing đặt thuộc tính cho nó?) Nếu vậy, chỉ cần đặt tiêu đề trong viewDidLoad vào tiêu đề của thuộc tính Thing.

+0

Dường như không hoạt động, mặc dù lý do của bạn có ý nghĩa. –

0
[thing setTitle: sub.title]; 
0

Giải pháp là thing.navigationItem.title = @"title"; tuy nhiên nó chỉ ra rằng subclassing một UINavigationController đã phá vỡ nó bằng cách nào đó và giải pháp của tôi cho rằng đã sử dụng một loại chứ không phải là một lớp con

0

Nếu UIViewController của bạn là một phần của một UITabController, sau đó bạn có thể làm:

self.tabBarController.title = sub.title; 
1

Có thể bạn đang đẩy UITabBarController thay vì bộ điều khiển chế độ xem thông thường. Trong trường hợp này, navigationItem sẽ hiển thị tiêu đề của bộ điều khiển hiện tại, bộ điều khiển thanh tab, ngay cả khi bạn thấy một chế độ xem khác. Bạn sẽ phải thay đổi tiêu đề của bộ điều khiển thanh tab để thay đổi văn bản được hiển thị ở trên.

self.tabBarController.title = @"Your title"; 
Các vấn đề liên quan