programing

스토리 보드 사용시 기본 탭 설정

coolbiz 2021. 1. 16. 10:15
반응형

스토리 보드 사용시 기본 탭 설정


iOS에서 스토리 보드를 사용할 때 기본 탭을 설정하는 방법을 알려주세요. 나는 이것을 달성하는 방법을 알아낼 수없는 것 같다.

감사합니다


다음 두 가지 방법 중 하나를 사용할 수 있습니다.

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

또는 개체의 직접 메서드

[tabBar setSelectedItem:myUITabBarItem];

또는이를 결합하여 다음을 수행 할 수 있습니다.

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

그러나 나는 그 방법을 아직 테스트하지 않았으며 이것이 도움이되기를 바랍니다!


다른 답변과 마찬가지로 프로그래밍 방식으로 초기 선택된 탭을 설정할 수 있지만 코드를 건드리지 않고 스토리 보드에서 동일한 결과를 얻으려면 다음을 수행합니다.

  1. 스토리 보드 인터페이스에서 탭 막대 컨트롤러 선택
  2. 유틸리티 패널에서 ID 검사기 표시
  3. 새 "사용자 정의 런타임 속성"추가
  4. 키 경로를 "selectedIndex"로 설정하십시오.
  5. 유형을 "숫자"로 설정
  6. 값을 선택하려는 탭의 인덱스로 설정합니다 (예를 들어 값 1은 두 번째 탭을 선택 함).
  7. 스토리 보드를 저장하고 애플리케이션을 빌드 및 실행합니다.

위의 단계를 완료했을 때의 모습입니다.


일부 하위 클래스에 과잉처럼 보일 수 UITabBarController있지만 가장 깨끗한 솔루션을 제공한다고 생각합니다.

  1. 창조하다 BaseTabBarController.swift
  2. 추가 @IBInspectable하고 설정하십시오 viewDidLoad.

    class BaseTabBarController: UITabBarController {
    
        @IBInspectable var defaultIndex: Int = 0
    
        override func viewDidLoad() {
            super.viewDidLoad()
            selectedIndex = defaultIndex
        }
    
    }
    
  3. 스토리 보드에서 UITabBarController새로운 하위 클래스로 설정합니다 .

여기에 이미지 설명 입력

  1. Attributes Inspector로 이동 하여 새 속성을 설정합니다 . Default Index :

여기에 이미지 설명 입력

  1. 따다! (:

  1. 의 새 파일 하위 클래스를 만듭니다 UITabBarController.
  2. 끝에 이것을 추가하십시오 viewDidLoad:

    self.selectedIndex = 1;

  3. UITabBarController스토리 보드의 에서이 새 파일을 사용자 지정 클래스로 설정합니다 .

끝났습니다.


다음 코드가 저에게 효과적이었습니다.

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedIndex = 2;

appdelegate 찾기 applicationDidBecomeActive기능 에서 다음 줄을 추가하십시오.

let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want

에서 viewDidLoad()TabBarController설정 selectedIndex당신이 원하는 무엇이든 할 수 있습니다. ( 0첫 번째, 3네 번째 등)


Xcode 8 이상을 통해이 작업을 수행 할 수 있습니다 (그냥 테스트했으며이 버전 이전에 사용할 수 있는지 여부는 알 수 없음)

@Joshua Finch가 말한 것처럼 단계를 수행하십시오.

  1. TabBar 대신 막대 항목을 선택하십시오.
  2. "사용자 정의 런타임 속성"으로 이동
  3. 새 키 추가
  4. 이름을 "선택됨"으로 지정
  5. 유형을 부울로 설정하고 true를 선택하거나 확인란을 선택하십시오.

내 변형은 더 이상 사용자 정의하지 않고 기본 선택된 컨트롤러를 변경 하려는 경우에 적합합니다 . 다음 카테고리를 추가하십시오 .

//  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

추신 : 나는 @ joshua-finch 대답을 선호합니다.


Aviel Gross의 답변을 기반으로 UITabBarController가 아닌 UITabBar에 대해 이것을 구현하고 싶었습니다. 다음과 같이 수행 할 수 있습니다.

class BaseTabBar: UITabBar {

    @IBInspectable var defaultIndex: Int = 0 {
        didSet {
            self.selectedItem = self.items?[defaultIndex]
        }
    }
}

예를 들어 로그인 화면에서 UITabBarController로 이동하는 경우 선택을 설정하는 것이 가장 고통 스러울 수 있습니다.

        let tabs = self.storyboard?.instantiateViewController(withIdentifier: "tabs") as! UITabBarController
        tabs.selectedIndex = 1
        self.present(tabs, animated:false)

InterfaceBuilder에서 모든 segue를 연결 해제 한 다음 표시하려는 순서대로 다시 연결합니다.

참조 URL : https://stackoverflow.com/questions/13136699/setting-the-default-tab-when-using-storyboards

반응형