UIButton
iPhone 앱에 하나의 탭보기가 있고의 탭 막대에서 다른 탭을 열고 싶다고 가정 해 봅시다 TabBarController
. 이를 위해 코드를 어떻게 작성합니까?
기존보기를 언로드하고 특정 탭보기를로드한다고 가정하지만 코드를 정확하게 작성하는 방법을 모르겠습니다.
답변
Swift 또는 Objective-C에서이 코드를 사용해보십시오
빠른
self.tabBarController.selectedIndex = 1
목표 -C
[self.tabBarController setSelectedIndex:1];
답변
탭은 0부터 시작하여 색인화됩니다. 따라서 다음 코드 스 니펫이 작동합니다.
tabBarController = [[UITabBarController alloc] init];
.
.
.
tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:4];
막대의 다섯 번째 탭으로 이동합니다.
답변
내 의견이다 selectedIndex
또는 사용이 objectAtIndex
탭을 전환 할 수있는 가장 좋은 방법은 필요하지 않습니다. 탭을 재정렬하면 하드 코딩 된 인덱스 선택으로 인해 이전 앱 동작이 엉망이 될 수 있습니다.
전환하려는 뷰 컨트롤러의 객체 참조가있는 경우 다음을 수행 할 수 있습니다.
tabBarController.selectedViewController = myViewController
물론 반드시 myViewController
의 목록에 있는지 확인해야합니다 tabBarController.viewControllers
.
답변
selectedIndex
UITabBarController 의 속성을 적절한 색인으로 설정하기 만하면 사용자가 탭 버튼을 탭한 것처럼보기가 변경됩니다.
답변
나는 Disco S2가 제안한 것을 시도했지만 가까이 있었지만 이것이 나를 위해 일한 결과입니다. 다른 탭 내에서 작업을 완료 한 후 호출되었습니다.
for (UINavigationController *controller in self.tabBarController.viewControllers)
{
if ([controller isKindOfClass:[MyViewController class]])
{
[self.tabBarController setSelectedViewController:controller];
break;
}
}
답변
탭을 이동할 수있는 경우 코드는 다음과 같습니다.
for ( UINavigationController *controller in self.tabBarController.viewControllers ) {
if ( [[controller.childViewControllers objectAtIndex:0] isKindOfClass:[MyViewController class]]) {
[self.tabBarController setSelectedViewController:controller];
break;
}
}
답변
Stuart Clark의 솔루션과 같지만 Swift 3의 경우 :
func setTab<T>(_ myClass: T.Type) {
var i: Int = 0
if let controllers = self.tabBarController?.viewControllers {
for controller in controllers {
if let nav = controller as? UINavigationController, nav.topViewController is T {
break
}
i = i+1
}
}
self.tabBarController?.selectedIndex = i
}
다음과 같이 사용하십시오.
setTab(MyViewController.self)
내 tabController는 navigationController 뒤에있는 viewController에 링크되어 있습니다. navigationController가 없으면 다음과 같습니다.
if let controller is T {