2010-11-16 14 views
16

Tôi muốn tắt hành động mặc định khi người dùng nhấn vào mục tabbar.Vô hiệu hóa thao tác - vòi người dùng trên mục tabbar để đi tới bộ điều khiển chế độ xem gốc

Ví dụ: tôi có tabbar với Tab1, Tab2 và Tab3. Trong Tab1, người dùng có thể điều hướng từ View1 đến View3 (View1> View2> View3). Nếu người dùng ở View3, và anh ta nhấn Tab1, ứng dụng sẽ đưa người dùng đến View1 (bộ điều khiển chế độ xem gốc). Tôi muốn tắt chức năng này. Tôi không muốn nhấn vào Tab1 để bật tất cả các bộ điều khiển chế độ xem. Làm thế nào tôi có thể làm điều đó?

Edit:

Hành vi này là một chút lạ, nhưng một phím tắt tiện dụng trong trường hợp hệ thống phân cấp sâu!

Bạn có thể thực hiện theo phương pháp UITabBarControllerDelegate để vô hiệu hóa hệ thống này shortcut rộng:

#pragma mark - 
#pragma mark UITabBarControllerDelegate 

- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc { 
    UIViewController *tbSelectedController = tbc.selectedViewController; 

    if ([tbSelectedController isEqual:vc]) { 
     return NO; 
    } 

    return YES; 
} 

Trả lời

19

nếu bạn nhìn vào các đại biểu UITabBarController có một phương pháp:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

Nếu bạn thực hiện điều này trong lớp học của bạn , bạn có thể kiểm tra nếu UIViewController là một trong những đã được hiển thị và sau đó trở lại NO, mà sẽ ngăn chặn điều này xảy ra.

tôi đã cùng một vấn đề với một đối tượng ABPeoplePicker nhúng trong một UITabBarController, trong đó nhấn tab 'Liên hệ' lần thứ hai mà đã được hiển thị sẽ làm cho việc kiểm soát ABPeoplePicker hiển thị 'Nhóm'

+0

Làm việc! Cảm ơn. – Mustafa