2013-04-05 24 views
6

Im phát triển ứng dụng ios và trong ứng dụng đó, sử dụng trình điều khiển thanh tab. Và từ bên trong bộ điều khiển thanh tab, hãy điều hướng đến một bộ điều khiển chế độ xem khác. Trước khi đẩy quan điểm điều khiển thiết lập một tài sản của bộ điều khiểnThanh tab xuất hiện sau khi bật trình điều khiển chế độ xem

viewController.hidesBottomBarWhenPushed = YES; 

Và im điều hướng đến một bộ điều khiển xem trong đó có các thanh tab ở phía dưới im.

Vấn đề là khi tôi bật trình điều khiển chế độ xem quay lại bộ điều khiển chế độ xem, thanh tab cũng xuất hiện trong chế độ xem đó. Có cách nào để ẩn thanh tab khi popping bộ điều khiển xem không?

Sẽ thật tuyệt nếu có ai có thể giúp tôi với điều này.

Xin cảm ơn trước.

+0

hiển thị mã bạn đã đặt thanh tab như thế nào? –

Trả lời

3

Trong trường hợp đó, phương phápWillAppear sẽ hữu ích. trong ô xem trước đầu tiên của bạn, hãy đặt mã này

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.tabBarController.tabBar.hidden = YES; 
} 

Vì vậy khi secondviewcontroller bật ra thì nó sẽ gọi phương thức này và thanh đáy của bạn sẽ bị ẩn.

+0

Tôi đã thử điều này, nhưng điều này sẽ không hoạt động vì bộ điều khiển xem thực sự không bị đẩy vào thời điểm này. Kịch bản là khi người dùng điều hướng trở lại. – era

+1

Phương thức này được gọi khi người dùng điều hướng trở lại không khi người dùng đã đẩy một chế độ xem khác để bạn phải khai báo 'viewController.hidesBottomBarWhenPushed = YES;' 2 lần. đầu tiên trong phương thức 'viewDidLoad' và thứ hai trong' viewWillAppear' mthod. – Dilip

+0

Tôi đã thử đặt thuộc tính trong chế độ xem đã tải quá .. nhưng vẫn còn tabbar ở đó. – era

0

Nơi này khi bạn đang nhấn vào nút quay lại

[self.tabBarController.tabBar setHidden:YES]; 

[UIView animateWithDuration:0.5 
        animations:^{ 
         self.tabBarController.tabBar.frame = CGRectMake(self.tabBarController.tabBar.frame.origin.x, self.tabBarController.tabBar.frame.origin.y+self.tabBarController.tabBar.frame.size.height, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height); 
       } 

Tôi có một câu trả lời khác ...

Đặt hai phương pháp này trong tất cả các ViewController và quản lýBOOLbiến làself.hidesBottomBarWhenPushed đến YESNOtheo yêu cầu của bạn

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.hidesBottomBarWhenPushed = YES; 
} 
- (void)viewDidDisappear:(BOOL)animated 
{ 
    self.hidesBottomBarWhenPushed = NO; 
} 
+0

tôi cũng đã thử điều này. Có điều là bạn có thể ẩn thanh tab, nó để lại một khoảng trống ở phía dưới. Khi tôi cố gắng đặt khung nhìn thành toàn màn hình, nó không hoạt động. – era

+0

Theo bạn nói, trước hết firstview có thanh đáy và sau đó đẩy nó sẽ ẩn phải không? và khi popped từ đẩy viewController sau đó nó nên ẩn ... là yêu cầu của bạn hoặc m thiếu bất cứ điều gì –

+0

firstview (có thanh dưới cùng) -> secondview (ẩn thanh dưới) -> thirdview (có thanh dưới cùng) Sau đó im popping thứ ba và điều hướng trở lại xem thứ hai thanh dưới cùng là có .. tôi cần phải thoát khỏi nó. nếu tôi làm những gì u đề nghị nó sẽ để lại một không gian trống ở phía dưới. – era

0

Phụ thuộc vào thiết kế của ứng dụng, bạn có thể thiết lập một đối tượng trung tâm là đại biểu chuyển hướng điều khiển của. Và ẩn/hiển thị thanh tab. câu hỏi này hidesBottomBarWhenPushed but when popped cũng cung cấp một giải pháp tuy nhiên tôi không thích. Bằng cách này, Nó không phổ biến để hiển thị thanh dưới cùng một lần nữa khi người dùng duyệt đến cấp độ thứ hai hoặc sâu hơn.

0

Thay vào đó, bạn có thể trình bày bộ điều khiển chế độ xem thứ hai trên bộ điều khiển thanh tab. Nếu bạn muốn bộ điều khiển xem thứ hai có thanh điều hướng, bạn có thể đặt nó trong bộ điều khiển điều hướng mới.

Nếu cách đó không giải quyết được sự cố của bạn, bạn có thể tạo bộ điều khiển thanh tab tùy chỉnh để có thể nằm trong bộ điều khiển điều hướng. Bạn có thể đẩy bộ điều khiển xem thứ hai vào bộ điều khiển điều hướng đó. Để tạo bộ điều khiển thanh tab tùy chỉnh, bạn có thể tham khảo Apple Documentation on Creating Custom Container View Controllers. Tôi nghĩ rằng nó hoạt động tốt trên iOS 5 trở lên.