2016-01-30 10 views
5

Uygulama açılışında, root view controller olarak UITabBarController var. Bu sekme çubuğu için toplam 7 ViewControllers var. Aşağıdaki yoksa yöntemle application(application:didFinishLaunchingWithOptions:) yılında AppDelegate.swift İçinde, düzgün çalışır:Uygulama başlangıcında UITabBarController için 3'ten büyük bir indeks seçin. Çalışmıyor

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     // Override point for customization after application launch. 
     self.tabBarController = self.window?.rootViewController as! UITabBarController 
     self.tabBarController.selectedIndex = 2 

     return true 
    } 

Bu mükemmel çalışıyor ve uygulama başlatıldığında sekme çubuğunda üçüncü öğesi seçilir.

Ancak, daha fazla gezinme denetleyicisine (yani 3'ün ötesindeki herhangi bir dizin anlamına gelir) giren herhangi bir öğeyi seçmek istediğimde, self.tabBarController.selectedIndex = 5 yalnızca çalışmaz. Bahsedilen ifade, uygulama lansmanı tamamlandıktan sonra herhangi bir bölümde çalışır, yani, ilk ViewController'ın viewDidAppear içinde self.tabBarController.selectedIndex = 5 yapsam çalışır; ancak uygulama başlatıldığında, yani application(application:didFinishLaunchingWithOptions:)'da çalışmaz. Sekme çubuğu seçilen öğe, lansman gerçekleştikten sonra varsayılan olarak kalır. Seçili endeksi, uygulamanın başlangıcında 3'ten (moreNavigationController'un altına düştüğünde) değiştirebileceğim yol nedir?

+0

http://stackoverflow.com/a/33375674/2303865 –

+0

@Leo Dabus, Uygulama başlatıldığında push bildiriminin derin bağlantısını ele almak istiyorum. Bu yüzden, uygulamamda ve itme bildiriminde bulunmuyorsa, push bildirimi tıklıyorum. Bu noktada, 'application (application: didFinishLaunchingWithOptions:) 'tetiklenir, ancak ilk görüntüleme denetleyicisi hala yüklü değil, bu nedenle gözlem denetçisinin, denetleyici örneği gözlemek için uygun olmadığından bu noktada nasıl çalışır? –

+0

Önerinizi denedim. Ne yazık ki çalışmıyor :( –

cevap

0

deneyin Eğer film şeridi kullanıyorsanız

// Override point for customization after application launch. 
     self.tabBarController = self.window?.rootViewController as! UITabBarController 
     self.tabBarController.selectedIndex = 2 
     self.tabBarController.view.layoutIfNeeded() 

     return true 
0

ekledi. This yanıtı benim için çalıştı, tabBarController sınıfınızda bir Inspectable var yaratabilir ve storyboard'da indeks numarasını belirtebilirsiniz.

İlgili konular