2010-07-29 43 views
7

Ngay bây giờ, tôi đang đặt tiêu đề trong khung nhìn ViewDidLoad của chế độ xem gốc của tab, tab này chỉ thay đổi khi tôi nhấp vào tab. Tôi muốn điều này được đặt trước khi tôi chọn tab. Tôi đã thử một cái gì đó như:iPhone Objective-C: Thay đổi chương trình tiêu đề của mục thanh tab trong thanh tab được tạo bằng IB?

[[self.parentViewController.tabBarController.tabBar.items objectAtIndex:2] title] = @"string"; 

trong chế độ xem đầu tiên tải trong tab khác, nhưng rõ ràng đã xảy ra sự cố vì tôi gặp phải lỗi toán hạng bên trái.

Ai đó có thể chỉ cho tôi cách chính xác để đạt được những gì tôi đang cố gắng làm không?

Cảm ơn bạn !!

Trả lời

3

Thử đặt tiêu đề trong awakeFromNib thay vì viewDidLoad. Chế độ xem cho bộ điều khiển chế độ xem không thực sự được tải cho đến khi bạn cần chế độ xem và trình điều khiển thanh tab theo mặc định không truy cập chế độ xem của bộ điều khiển chế độ xem cho đến khi bạn thực sự chọn nó (đó là lý do bạn thấy tiêu đề thay đổi khi bạn chọn tab).

Vì nib đang tạo bộ điều khiển chế độ xem để bắt đầu (giả sử bạn đã xây dựng bộ điều khiển thanh tab trong IB) awakeFromNib sẽ được gọi ngay sau khi bộ điều khiển chế độ xem được tạo, trước khi bộ điều khiển thanh tab có thể hỏi tiêu đề là.

+0

Whoa, nó hoạt động như ma thuật. Tôi thậm chí không biết rằng awakeFromNib thậm chí còn là một lựa chọn cho các phương thức viewController. (Học ​​một cái gì đó mới mỗi ngày!) Cảm ơn bạn !! –

+0

awakeFromNib là một tùy chọn cho bất kỳ đối tượng nào được tải từ một ngòi - bộ nạp nib tìm kiếm phương thức đó trên bất kỳ đối tượng nào nó tạo ra và gọi nó nếu tìm thấy. Lưu ý rằng nếu bạn tạo công cụ đôi khi từ xib và đôi khi từ mã, bạn sẽ phải ghi đè lên phương thức initWithNibName:. –

4
[[self.parentViewController.tabBarController.tabBar.items objectAtIndex:2] title] = @"string"; 

Cú pháp hơi tắt ở đây. Bạn có thể muốn một cái gì đó như:

[[self.parentViewController.tabBarController.tabBar.items objectAtIndex:2].title = @"string"; 

Tuy nhiên, điều đó sẽ không hoạt động, vì không có thuộc tính title để đặt. Trong thực tế, không có cách nào tôi có thể thấy để thay đổi một tiêu đề của UITabBarItem một khi nó đã được khởi tạo. Bạn sẽ phải sử dụng phương thức setItems:animated: của UITabBar để đặt toàn bộ nhóm mục cùng một lúc. Nhưng nó sẽ không vui.

Tôi đặt cược đây sẽ là một vi phạm Apple HIG, đó là lý do tại sao không có cách nào dễ dàng để thực hiện việc đó với API hiện tại. Suy nghĩ lại về thiết kế của bạn và tự hỏi tại sao bạn muốn thay đổi tên của các tab, điều này sẽ gây nhầm lẫn cho người dùng của bạn.

+0

Cảm ơn bạn đã phản hồi! Tôi hiện đang xây dựng một ứng dụng với Foursquare API và tôi nhận thấy rằng ứng dụng iPhone Foursquare có một trong các tên tab được đặt thành tên đầu tiên của người dùng, vì vậy tôi đã tự hỏi làm thế nào họ có thể đã làm điều đó. –

+0

Có khả năng họ làm điều đó khi khởi chạy UITabBar khi ứng dụng khởi chạy. –

Các vấn đề liên quan