2015-01-22 16 views
26

Tôi có một ứng dụng thanh tab và tôi có một nút trên giao diện đầu tiên mà tôi muốn khi nhấn nút chuyển sang tab thứ hai của tôi lập trình trong thanh tab.Chuyển đổi thanh tab theo lập trình trong Swift

Tôi hoàn toàn không thể tìm ra cách để có chỉ mục, v.v. để chuyển sang nó, tôi đã thử các công cụ như thế này.

tababarController.selectedIndex = 1 

Không thành công.

Trả lời

80

Thats khá tabBarController đơn giản được khai báo là một loại tùy chọn

var tabBarController: UITabBarController? { get } 

Các tổ tiên gần nhất trong quan điểm điều khiển hệ thống cấp bậc đó là một thanh tab điều khiển. Nếu bộ điều khiển chế độ xem hoặc tổ tiên của nó là con của bộ điều khiển thanh tab, thuộc tính này chứa thanh tab sở hữu bộ điều khiển. Thuộc tính này là nil nếu bộ điều khiển xem không được gắn bên trong bộ điều khiển thanh tab.

Vì vậy, bạn chỉ cần thêm "?" ở cuối của nó:

@IBAction func goToSecond(sender: AnyObject) { 
    tabBarController?.selectedIndex = 1 
} 
+0

Cảm ơn bạn rất nhiều vì tôi đã đóng ahaha – Azabella

+1

Bạn được chào đón –

+0

tôi đã thử ở trên nó không hoạt động. (Bạn có thể vui lòng giúp đỡ? – vinbhai4u

2

Giải pháp được cung cấp bởi Leo Dabus (xem bên trên) hoạt động tốt cho tôi. Tuy nhiên - một số điều khiển có trạng thái xấu. không thể khắc phục điều đó, nhưng cách giải quyết này ít sẽ làm cho bạn tất cả tốt:

func switchToDataTab(){ 
    NSTimer.scheduledTimerWithTimeInterval(0.2, 
     target: self, 
     selector: "switchToDataTabCont", 
     userInfo: nil, 
     repeats: false) 
} 

func switchToDataTabCont(){ 
    tabBarController!.selectedIndex = 0 
} 
+0

Tôi thực sự có vấn đề rất giống nhau. Trạng thái' UITableView' không thay đổi, ngay cả 'tableView.reloadData()' được gọi là. Bạn có thể đưa ra lý do đằng sau nó hoặc một giải pháp đẹp hơn? –

+0

@ MarcinŚwierczyński, thật không may - không. Hãy viết cho tôi nếu bạn sẽ ... –

0

Thêm mã Anthony:

func switchToDataTab(){ 
    NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false) 
} 

func switchToDataTabCont(){ 
    tabBarController!.selectedIndex = 0 
} 

Trường hợp lớp chọn đã được thay đổi để

#selector(switchToDataTabCont) 
5

Cập nhật câu trả lời của Anthony cho Swift3

func switchToDataTab() { 
    Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false) 
} 

func switchToDataTabCont(){ 
    tabBarController!.selectedIndex = 0 
} 
Các vấn đề liên quan