Настройка закладки по умолчанию при использовании раскадровки
Кто-нибудь может рассказать мне, как установить вкладку по умолчанию при использовании раскадровки в iOS. Я не могу понять, как это сделать.
Спасибо
Ответы
Ответ 1
Вы можете использовать один из этих двух способов:
tabBar.items = tabBarItems;
tabBar.selectedItem = [tabBarItems objectAtIndex:0];
или прямой метод из объекта
[tabBar setSelectedItem:myUITabBarItem];
или вы можете комбинировать их для этого:
tabBar.items = tabBarItems;
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];
но я еще не проверял этот метод, надеюсь, что это поможет!
Ответ 2
Пока вы можете установить исходную выбранную вкладку программно, как и другие ответы, чтобы добиться того же самого в своем раскадровке, не касаясь кода, вы должны выполнить следующее:
- Выберите контроллер панели вкладок в интерфейсе раскадровки
- Показать инспектора удостоверений на панели "Утилиты"
- Добавить новый "Атрибут времени, определяемого пользователем"
- Задайте путь ключа к "selectedIndex"
- Задайте тип "Число"
- Установите значение в индекс вкладки, которую вы хотите выбрать (например, значение 1 будет выбирать вторую вкладку)
- Сохраните раскадровку, создайте и запустите приложение
Это должно выглядеть так, как только вы достигли вышеуказанных шагов:
![]()
Ответ 3
Может показаться излишним для некоторых подкласса UITabBarController
, но, я думаю, он обеспечивает самое чистое решение.
- Создать
BaseTabBarController.swift
-
Добавьте @IBInspectable
и установите его в viewDidLoad
:
class BaseTabBarController: UITabBarController {
@IBInspectable var defaultIndex: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
selectedIndex = defaultIndex
}
}
-
В раскадровке установите UITabBarController
как ваш новый подкласс:
![enter image description here]()
- Перейдите в Инспектор атрибутов, добавьте новое свойство Индекс по умолчанию:
![enter image description here]()
- та-да! (:
Ответ 4
Вы закончили.
Ответ 5
Для меня работал следующий код:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedIndex = 2;
Ответ 6
В viewDidLoad()
TabBarController
установите selectedIndex
в нужное вам положение. (0
будет первым, 3
будет четвертым и т.д.)
Ответ 7
в appdelegate найдите applicationDidBecomeActive
функцию и добавьте эти строки
let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want
Ответ 8
Вы можете достичь этого через Xcode 8 или новее (просто протестировали его и не знаете, доступно ли это до этой версии)
Сделайте шаги как @Joshua Finch, но:
- Выберите элемент панели вместо TabBar
- Получено "Атрибут, определяемый пользователем Runtime"
- Добавить новый ключ
- Назовите его "выбрано"
- Задайте свой тип boolean и выберите true/или установите флажок
Ответ 9
Мой вариант подходит, когда вы хотите просто изменить выбранный контроллер по умолчанию, больше никаких настроек. Просто добавьте следующую категорию:
// 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
PS: я предпочитаю @Джошуа-Финч ответ
Ответ 10
Основываясь на ответе Авиля Гросса, я просто хотел реализовать это для UITabBar, в отличие от UITabBarController. Это можно сделать следующим образом:
class BaseTabBar: UITabBar {
@IBInspectable var defaultIndex: Int = 0 {
didSet {
self.selectedItem = self.items?[defaultIndex]
}
}
}
Ответ 11
При условии, что вы переходите на свой UITabBarController, например, с экрана входа в систему, было бы наименее трудно установить выбор там:
let tabs = self.storyboard?.instantiateViewController(withIdentifier: "tabs") as! UITabBarController
tabs.selectedIndex = 1
self.present(tabs, animated:false)
Ответ 12
В InterfaceBuilder отключите все сегменты, затем снова подключите их в том порядке, в котором вы хотите, чтобы они появлялись.