2016-04-01 12 views
2

5 sekmem var ve kök denetleyiciye geldiğimde beni son kullanılan sekmeye götürür. Belirli bir sekmeye atlayabileceğim bir yol var mı?Kök denetleyicisine, ancak sekme denetleyicisindeki belirli sekmeye gidin

//takes me to last used tab on the tab controller 
@IBAction func goHome(sender: AnyObject) 
{ 
self.navigationController?.popToRootViewControllerAnimated(true) 
} 

Açık 10 görünümü denetleyicileri var ve giriş sayfasına bu Swift olduğundan

+0

ilk sekmesini seçmek için 'self.tabBarController.selectedIndex = 1' gibi bir şey ile bir TabController kullanıyorsanız, o zaman bu özel sekme ve popToRootViewController için nav denetleyicisi alabilir. – Lucho

+0

benzer bir sorun .. http://stackoverflow.com/questions/8963450/jump-to-a-specific-tab-in-a-uitabbarcontroller –

cevap

0

olduğunu tabcontroller indeksi 0 atlamak istediğiniz yukarıdaki sonra butona tıklarsanız, örneğin, belki istersiniz uygulama yapısı değişmiyor durumda ata olarak bir sekme çubuğu denetleyicisi olduğunu kontrol:

@IBAction func goHome(sender: UIButton) { 
    self.navigationController?.popToRootViewControllerAnimated(true) 
    if let tab = self.tabBarController { 
     tab.selectedIndex = 0 // Or whichever number you like 
    } 
} 
+0

Bu hala beni daha önce kullanılan sekmeye götürür. Görünüm denetleyicisi, sekme denetleyicisinin görüntülenmemesine neden oluyor; bu nedenle, root'unu açmaya çalışıyorum ve sonra sekmeyi seçiyorum ama hala çalışmıyor = ( – swiftTonio

+0

Geçerli denetleyiciniz sekme denetleyicisinin bir parçası değilse yapı, nasıl görüntülendi? (Veya, belki de soru olmalıdır: navigasyon denetleyicisi nasıl görüntülendi?) Kişilerin gönderdiği cevaplar, normal bir sekme/gezinme yapısı için makul olan, bu ile farklı olan nedir? –

+0

im bir sekme denetleyicisine köklenebilen bir gezinme denetleyicide ancak kök dizine girdikten sonra dizini seçemiyorum. Başka insanlarla karşılaştırıldığında benimkiyle farklı olanlardan emin değilim. – swiftTonio

2

Bu kod sekmesine götürecek ve o sekme için kök görünümü denetleyicisine açılacaktır.

func buttonAction(sender: AnyObject){ 
    let someTabIndex = 0 
    // Get the tabBar 
    let t = self.tabBarController 
    // Change the selected tab item to what you want 
    t?.selectedIndex = someTabIndex 
    // Pop the navigation controller of that index 
    let v = t?.viewControllers?[someTabIndex] 
    if let n = v?.navigationController { 
     n.popToRootViewControllerAnimated(true) 
    } 

} 
+0

İsterseniz popToRootViewController (anim ated: false), önce bu navigasyon denetleyicisini gizlemelisiniz. Yani, 'pop?', 'PopToRootViewController (canlandırılmış:') hakkında Apple'ın belgesinde anlatıldığı gibi pop'tan daha erken çağrılmalıdır. –

0
func goToRootOfTab(index: Int) { 
    let window = (UIApplication.shared.delegate as? AppDelegate)?.window 
    let tabBar :UITabBarController? = window?.rootViewController as? UITabBarController 
    tabBar?.selectedIndex = index 
    // pop to root if navigated before 
    if let nav = tabBar?.viewControllers?[index] as? UINavigationController { 
     nav.popToRootViewController(animated: true) 
    } 
} 
İlgili konular