2016-03-30 25 views
5

Tôi muốn thay đổi TabBar Item, khi Người dùng đăng nhập hay không.Thay đổi tabBar theo cách lập trình?

Ví dụ: tôi có 5 mục tabBar khác nhau, tất cả đã tạo Bảng phân cảnh.

Bây giờ tôi muốn thay đổi tarBar bằng chỉ mục 2 (hoặc thẻ == 2) khi tôi không có tài khoản. Tôi muốn tải một rootViewController khác. RootViewController không phải là một mục của TabBar của tôi, tôi sẽ tải một Controller hoàn toàn khác.

Cách tốt nhất để làm điều này là gì? Tôi có thể thay đổi biểu tượng đơn giản bằng cách:

self.tabBar.items![0].selectedImage = UIImage(named: "icon_cal_grey") 

Nhưng làm cách nào để thay đổi rootViewController?

Tôi có nên làm điều đó ở đây không?

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 

    if item.tag == 1 { 
     // ? 
    } 

} 

Hoặc bạn nên tạo một UINavigationController là RootViewController và tải tại đây "ViewController" đúng như RootViewController?

Trả lời

3

Kiểm tra nếu người dùng đang đăng nhập và sau đó thay đổi quan điểm điều khiển của UITabBarController:

tabbarController.viewControllers?.replaceRange() 

Ngoài ra điều này có thể giúp Set view controllers of UITabBarController in Swift

2

Hãy thử điều này:

self.tabBar.selectedIndex = 0 

Nếu bạn muốn thay đổi viewController

+0

Không, tôi không muốn thay đổi chỉ một ViewController, tôi muốn thay đổi một RootViewController (người chưa được một UITabBarItem) – derdida

3

Bạn cần thay thế tab thứ hai ass liên kết viewcontroller bằng một bộ điều khiển xem mới. đây là mẫu mã, có thể giúp bạn:

NSMutableArray *viewControllers = [[NSMutableArray alloc] initWithArray:self.tabBarController.viewControllers]; 
UIViewController *newVC = [UIViewController new]; 
UINavigationController *newNav = [[UINavigationController alloc] initWithRootViewController:newVC]; 
[viewControllers replaceObjectAtIndex:1 withObject:newNav]; 
self.tabBarController.viewControllers = viewControllers 
+0

Cảm ơn - nhưng replaceObjectAtIndex là trong Swift không có sẵn. Chỉ có một "replaceRange" - bạn có biết cách sử dụng nó không? – derdida

+0

@derdida: Tôi đang sử dụng xcode 7.2 và tôi đã tìm thấy phương pháp này .. để mảng: NSMutableArray = NSMutableArray() array.replaceObjectAtIndex (1, withObject: Your_object) –

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