Establecer la pestaña predeterminada al usar guiones gráficos


¿Puede alguien decirme cómo configurar la pestaña predeterminada al usar guiones gráficos en iOS? Parece que no puedo averiguar cómo lograr esto.

Gracias

Author: user1145581, 2012-10-30

10 answers

Puedes usar uno de estos dos métodos:

tabBar.items = tabBarItems;
tabBar.selectedItem = [tabBarItems objectAtIndex:0];

O un método directo del objeto

[tabBar setSelectedItem:myUITabBarItem];

O puedes combinarlos para hacer esto:

tabBar.items = tabBarItems;
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];

Pero aún no he probado ese método, ¡espero que esto ayude!

 9
Author: Trevor Rudolph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-07 22:27:03

Si bien puede establecer la pestaña seleccionada inicial programáticamente como las otras respuestas, para lograr lo mismo en su guion gráfico sin tocar el código, realizaría lo siguiente:

  1. Seleccione el Controlador de la barra de pestañas en la interfaz del guion gráfico
  2. Mostrar el Inspector de Identidad en el panel Utilidades
  3. Agregar un nuevo "Atributo de Tiempo de ejecución definido por el Usuario"
  4. Establecer la ruta de la clave en"selectedIndex"
  5. Establezca el Tipo en"Número"
  6. Establecer el valor al índice de la pestaña que desea seleccionar (un valor de 1 seleccionaría la segunda pestaña, por ejemplo)
  7. Guarde el guion gráfico, compile y ejecute la aplicación

Esto debería ser lo que parece cuando haya logrado los pasos anteriores:

 106
Author: Joshua Finch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-24 10:27:05

Puede parecer exagerado para algunos subclase UITabBarController, pero creo que proporciona la solución más limpia.

  1. Crear BaseTabBarController.swift
  2. Añade un @IBInspectable y ponlo en viewDidLoad:

    class BaseTabBarController: UITabBarController {
    
        @IBInspectable var defaultIndex: Int = 0
    
        override func viewDidLoad() {
            super.viewDidLoad()
            selectedIndex = defaultIndex
        }
    
    }
    
  3. En el storyboard, establece que UITabBarController sea tu nueva subclase:

introduzca la descripción de la imagen aquí

  1. Ir al Inspector de atributos añadir establecer la nueva propiedad Índice predeterminado :

introduzca la descripción de la imagen aquí

  1. ta-da! (:
 58
Author: Aviel Gross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-20 14:15:00
  1. Crear una nueva subclase de archivo de UITabBarController;
  2. Añadir esto al final de viewDidLoad:

    self.selectedIndex = 1;

  3. Establezca este nuevo archivo como la Clase Personalizada en el UITabBarController de su guion gráfico.

Has terminado.

 27
Author: maxagaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-23 10:02:31

El siguiente código funcionó para mí:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedIndex = 2;
 22
Author: Rahul Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-23 09:54:09

En el viewDidLoad() del TabBarController, establece selectedIndex a lo que quieras. (0 sería el primero, 3 sería el cuarto, etc.)

 2
Author: jake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-22 17:09:56

En appdelegate encuentra la función applicationDidBecomeActive y agrega estas líneas

let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want
 1
Author: zizutg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-02 03:54:55

Puede lograr esto a través de Xcode 8 o posterior (solo lo probó y no sabe si está disponible antes de esta versión)

Haz los pasos como @Joshua Finch dijo pero:

  1. Seleccione el elemento de la barra en lugar de la barra de pestañas
  2. Llegó a "Atributo de Tiempo de ejecución definido por el Usuario"
  3. Añadir nueva clave
  4. Nómbralo "seleccionado"
  5. Establezca su tipo en booleano y elija true / o marque la casilla de verificación
 1
Author: mohammad alnajjar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-14 10:24:03

Basándome en la respuesta de Aviel Gross, solo quería implementar esto para un UITabBar, en lugar de un UITabBarController. Esto se puede hacer de la siguiente manera:

class BaseTabBar: UITabBar {

    @IBInspectable var defaultIndex: Int = 0 {
        didSet {
            self.selectedItem = self.items?[defaultIndex]
        }
    }
}
 0
Author: ThomasHaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-19 13:05:12

Mi variante es adecuada cuando desea simplemente cambie el controlador seleccionado por defecto, no más personalización. Basta con añadir la siguiente categoría :

//  UITabBarController+DefaultPage.h
#import <UIKit/UIKit.h>

@interface UITabBarController(DefaultPage)

@end


//  UITabBarController+DefaultPage.m
#import "UITabBarController+DefaultPage.h"

@implementation UITabBarController(DefaultPage)

- (void)viewDidLoad {
    [super viewDidLoad];

    self.selectedIndex = 1;
}

@end

P.d.: Prefiero @joshua-finch respuesta

 0
Author: WINSergey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-01 12:53:22