2012-09-08 48 views
10

Cũng trong ứng dụng của tôi, tôi có bộ điều khiển điều hướng với chế độ xem bảng và khi nhấn nút, trình điều khiển tab sẽ mở ra. Trong tab đầu tiên, tôi muốn đặt tiêu đề của thanh điều hướng.Đặt tiêu đề của thanh điều hướng bên trong bộ điều khiển thanh tab

Đây là hình ảnh bảng phân cảnh của tôi chỉ để đảm bảo chúng tôi đánh bại lẫn nhau.

enter image description here

Đây là mã của tôi phải hoạt động. Tôi đã sử dụng mã này, khi cố gắng mở một khung nhìn duy nhất và không phải là một trình điều khiển tab và nó đã hoạt động đúng cách. Vì vậy, tôi đoán tôi phải thay đổi một cái gì đó.

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

đâu Skicenter là tên của lớp cho tab đầu tiên của tôi và SkiCenterIds là định danh của bộ điều khiển tab của tôi trong kịch bản này.

Mã trong Skicenter .m là:

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

    self.navigationItem.title = ski_center;   
} 

nhưng tôi không thấy bất kỳ tiêu đề. Vì vậy, những gì tôi đã làm sai? Tôi cũng đã cố gắng này:

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

hoặc

self.title=ski_center; 

các ski_center có giá trị vì nó được in ra bình thường trong NSLog.

+0

Bạn đang sử dụng một bộ điều khiển thanh tab trong một bộ điều khiển chuyển hướng? –

+0

Có, anh ấy làm điều đó – Fab1n

Trả lời

1

Về cơ bản tôi không biết nếu bạn did't nhận thấy nhưng tôi đã nhận nó làm việc như thế này:

tôi được giao thanh tab của tôi điều khiển một lớp mới.

tôi đã làm như sau:

thêm nó vào ứng dụng delegate.h

@property (nonatomic,retain) NSString *center; 

thêm nó vào mainmap.m

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

và trong mytabbarcontroller.m

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

    self.navigationItem.title = ski_center; 
5

Ok chỉ để bạn biết, đó là thói quen rất xấu để đặt một UITabBarController bên trong một UINavigationController - Apple khuyến cáo cho thiết kế giao diện người dùng tốt mà bạn chỉ bao giờ nên đặt một UINavigationController bên trong một UITabBarController và không theo chiều ngược lại. Dù bằng cách nào, bạn cũng có thể thay đổi tiêu đề từ số UITabBarController như thế này;

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

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

Điều đó sẽ hiệu quả.

+0

Không hoạt động. Thanh điều hướng không có tiêu đề. – ghostrider

+0

Tôi đã cập nhật câu trả lời của mình, vui lòng xem và xem điều đó có hiệu quả không. – Wasim

+0

Nó cũng không hoạt động. bạn đề nghị tôi làm gì Tôi đã cố gắng cấu trúc này bởi vì từ một bảng tôi muốn mở một menu tab và không phải là màn hình đầu tiên mở ra được một tab. – ghostrider

1

thử điều này:

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

Nó không hoạt động. Thanh điều hướng không có tiêu đề. – ghostrider

12

Thêm vào giải pháp của ghostrider, trong mytabbarcontroller.m self.navigationItem.title không hoạt động đối với tôi.Tôi có một NavigationController có chi tiết xem là một TabController và đây là những gì tôi có trong thực hiện tab đầu tiên của tôi

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

Đây là giải pháp duy nhất có hiệu quả đối với tôi. Thiết lập của tôi - UINavigationControllers bên trong UITabbarController (đó là bộ điều khiển xem gốc). Bằng cách nào đó, tất cả các giải pháp rõ ràng khác đã không làm việc cả. – Ingweland

+0

Đây phải là câu trả lời đúng. Thực hiện tốt. Cảm ơn đã giúp đỡ. –

32

đơn giản!

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

Văn bản tiêu đề biến mất khi chuyển đổi giữa các trình điều khiển chế độ xem –

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

tabController.navigationItem.title = @"ABC"; 

này đang làm việc cho tôi

Từ một số R & D trên internet

Bạn cần phải vượt qua navigationItem lên chuỗi. UINavigationController hiển thị navigationItem thuộc topViewController của nó là UITabBarController. UITabBarController hiển thị tiêu đề navigationItem trong các tab của nó. Vì vậy, những gì bạn cần làm là đảm bảo rằng navigationItem của tabBarController là nó selectedViewController của navigationItem

Vì vậy, để tóm tắt:

tiêu đề UINavigationController = topViewController.navigationItem.title

UITabBarController tabTitle = selectedViewController .navigationItem.title

UIViewController title = navigationItem.title

1

Trong nhanh chóng 3

self.tabBarController?.navigationItem.title = "Your title goes here" 
Các vấn đề liên quan