Подтвердить что ты не робот

Настройка закладки по умолчанию при использовании раскадровки

Кто-нибудь может рассказать мне, как установить вкладку по умолчанию при использовании раскадровки в iOS. Я не могу понять, как это сделать.

Спасибо

4b9b3361

Ответ 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

  1. Перейдите в Инспектор атрибутов, добавьте новое свойство Индекс по умолчанию:

enter image description here

  1. та-да! (:

Ответ 4

  • Создайте новый подкадр файла UITabBarController;
  • Добавьте это в конец viewDidLoad:

    self.selectedIndex = 1;

  • Установите этот новый файл как пользовательский класс в UITabBarController вашей раскадровки.

Вы закончили.

Ответ 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 отключите все сегменты, затем снова подключите их в том порядке, в котором вы хотите, чтобы они появлялись.