2012-05-03 17 views
9

Problemi con la modifica della selezione iniziale della barra delle schede su un'applicazione (ad esempio, la scheda centrale viene selezionata all'avvio dell'app anziché nella scheda più a sinistra). L'app utilizza gli storyboard e il controller della barra delle schede è stato aggiunto in seguito in fase di sviluppo tramite il metodo storyboard.Come modificare la selezione iniziale della barra delle schede a livello di programmazione

tabBarController.selectedIndex = 1; 

il codice di cui sopra non funziona (perché non ho un regolatore di visualizzazione personalizzata collegata alla mia barra delle schede, solo il default UITabBarController):

fatto qualche googling e guardò molte risorse differenti e non ho ancora trovato una soluzione per un'app che non è stata inizialmente creata utilizzando l'applicazione Tab Bar del modello di Apple.

+0

È questo il controller della vista iniziale per il progetto o è vero spinto da un altro controller di vista? – lnafziger

+0

il controller della barra delle schede è il controller della vista iniziale. – LazerLex

risposta

28

Poiché questo è il controller della vista iniziale, e non è una sottoclasse, è necessario impostare questo nel vostro AppDelegate.

In AppDelegate.m, aggiungere il seguente al vostro metodo di application:didFinishLaunchingWithOptions::

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    // Select the left-most tab of our initial tab bar controller: 
    UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; 
    tabBar.selectedIndex = 0; 
    return YES; 
} 
+2

Sei geniale. Ha funzionato perfettamente Ha senso che dovrei farlo in AppDelegate perché è il controller di visualizzazione iniziale. Grazie. – LazerLex

+1

Per riferimento futuro, nella situazione in cui è necessario fare qualcosa di simile e non è il controller di visualizzazione iniziale, si supererà 'prepareForSegue' nella vista che precede quella che si sta caricando e si imposta da lì. – lnafziger

1

tabBar setSelectedItem: provare a utilizzare questo nel vostro viewDidLoad

+0

che non funziona perché non ho uno specifico controller di visualizzazione per la mia barra delle schede (con un metodo viewDidLoad). Non ho una presa creata per la mia barra delle linguette. È solo il predefinito creato in Storyboard. – LazerLex

+0

Ho aggiunto una vista controller.h e .m e l'ho connessa con il mio TabBarController. Ho creato un punto vendita UITabBarController e ho utilizzato l'indice selezionato. e poi provato ciò che hai detto (creando un punto vendita UITabBar e usando setSelectedItem) e ancora niente:/ – LazerLex

Problemi correlati