스토리 보드 사용시 기본 탭 설정
iOS에서 스토리 보드를 사용할 때 기본 탭을 설정하는 방법을 알려주세요. 나는 이것을 달성하는 방법을 알아낼 수없는 것 같다.
감사합니다
다음 두 가지 방법 중 하나를 사용할 수 있습니다.
tabBar.items = tabBarItems;
tabBar.selectedItem = [tabBarItems objectAtIndex:0];
또는 개체의 직접 메서드
[tabBar setSelectedItem:myUITabBarItem];
또는이를 결합하여 다음을 수행 할 수 있습니다.
tabBar.items = tabBarItems;
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];
그러나 나는 그 방법을 아직 테스트하지 않았으며 이것이 도움이되기를 바랍니다!
다른 답변과 마찬가지로 프로그래밍 방식으로 초기 선택된 탭을 설정할 수 있지만 코드를 건드리지 않고 스토리 보드에서 동일한 결과를 얻으려면 다음을 수행합니다.
- 스토리 보드 인터페이스에서 탭 막대 컨트롤러 선택
- 유틸리티 패널에서 ID 검사기 표시
- 새 "사용자 정의 런타임 속성"추가
- 키 경로를 "selectedIndex"로 설정하십시오.
- 유형을 "숫자"로 설정
- 값을 선택하려는 탭의 인덱스로 설정합니다 (예를 들어 값 1은 두 번째 탭을 선택 함).
- 스토리 보드를 저장하고 애플리케이션을 빌드 및 실행합니다.
위의 단계를 완료했을 때의 모습입니다.
일부 하위 클래스에 과잉처럼 보일 수 UITabBarController
있지만 가장 깨끗한 솔루션을 제공한다고 생각합니다.
- 창조하다
BaseTabBarController.swift
추가
@IBInspectable
하고 설정하십시오viewDidLoad
.class BaseTabBarController: UITabBarController { @IBInspectable var defaultIndex: Int = 0 override func viewDidLoad() { super.viewDidLoad() selectedIndex = defaultIndex } }
스토리 보드에서
UITabBarController
새로운 하위 클래스로 설정합니다 .
- Attributes Inspector로 이동 하여 새 속성을 설정합니다 . Default Index :
- 따다! (:
- 의 새 파일 하위 클래스를 만듭니다
UITabBarController
. 끝에 이것을 추가하십시오
viewDidLoad
:self.selectedIndex = 1;
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가 말한 것처럼 단계를 수행하십시오.
- TabBar 대신 막대 항목을 선택하십시오.
- "사용자 정의 런타임 속성"으로 이동
- 새 키 추가
- 이름을 "선택됨"으로 지정
- 유형을 부울로 설정하고 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
'programing' 카테고리의 다른 글
MATLAB의 장점은 무엇입니까? (0) | 2021.01.16 |
---|---|
경로에서 파일 이름을 추출하는 방법은 무엇입니까? (0) | 2021.01.16 |
Groovy의 목록에서 Null 항목 제거 (0) | 2021.01.16 |
함수형 프로그래밍, 스칼라 맵 및 왼쪽 접기 (0) | 2021.01.16 |
C에서 값을 교환하는 가장 빠른 방법은 무엇입니까? (0) | 2021.01.16 |