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
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!
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:
- Seleccione el Controlador de la barra de pestañas en la interfaz del guion gráfico
- Mostrar el Inspector de Identidad en el panel Utilidades
- Agregar un nuevo "Atributo de Tiempo de ejecución definido por el Usuario"
- Establecer la ruta de la clave en"selectedIndex"
- Establezca el Tipo en"Número"
- Establecer el valor al índice de la pestaña que desea seleccionar (un valor de 1 seleccionaría la segunda pestaña, por ejemplo)
- Guarde el guion gráfico, compile y ejecute la aplicación
Esto debería ser lo que parece cuando haya logrado los pasos anteriores:
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.
- Crear
BaseTabBarController.swift
-
Añade un
@IBInspectable
y ponlo enviewDidLoad
:class BaseTabBarController: UITabBarController { @IBInspectable var defaultIndex: Int = 0 override func viewDidLoad() { super.viewDidLoad() selectedIndex = defaultIndex } }
-
En el storyboard, establece que
UITabBarController
sea tu nueva subclase:
- Ir al Inspector de atributos añadir establecer la nueva propiedad Índice predeterminado :
- ta-da! (:
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
- Crear una nueva subclase de archivo de
UITabBarController
; -
Añadir esto al final de
viewDidLoad
:self.selectedIndex = 1;
Establezca este nuevo archivo como la Clase Personalizada en el
UITabBarController
de su guion gráfico.
Has terminado.
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;
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.)
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
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:
- Seleccione el elemento de la barra en lugar de la barra de pestañas
- Llegó a "Atributo de Tiempo de ejecución definido por el Usuario"
- Añadir nueva clave
- Nómbralo "seleccionado"
- Establezca su tipo en booleano y elija true / o marque la casilla de verificación
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]
}
}
}
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
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