Uitabbar 뷰는 프로그래밍 방식으로 탭에서 선택되었습니다
-
20-08-2019 - |
문제
내비게이션 컨트롤러 기반 애플리케이션이있었습니다. 그리고 응용 프로그램에서 탭 막대를 사용하기로 결정했습니다.
사용자가 특정 탭 막대 항목을 누르면 특정 뷰 컨트롤러를 표시하려고합니다. 코드에서 프로그래밍 방식으로 표시 할 내용을 선택하고 싶습니다.
인터페이스 빌더를 내비게이션 컨트롤러를 내 탭 막대에 추가하려고했지만 뷰 컨트롤러의 ViewWillAppear가 호출되지 않습니다.
이 기능을 어떻게 구현할 수 있습니까?
해결책
그것이 "올바른 길"인지는 모르겠지만, 여기에 내가 일반적으로 세 탭으로 이것을하는 방법이 있습니다.
- (void)initControls {
// Create the window.
[self setWindow:[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]];
// Create Tab Bar.
tabCon = [[UITabBarController alloc] init];
// Local array variable that holds the viewcontrollers.
// Capacity corresponds to the number of VC's
NSMutableArray *localVCArray = [[NSMutableArray alloc] initWithCapacity:3];
MyFirstViewController *oneViewController = [[MyFirstViewController alloc] init];
UINavigationController *oneNavCon = [[UINavigationController alloc] initWithRootViewController:oneViewController];
[localVCArray addObject:oneNavCon];
[oneViewController release];
[oneNavCon release];
MySecondViewController *twoViewController = [[MySecondViewController alloc] init];
UINavigationController *twoNavCon = [[UINavigationController alloc] initWithRootViewController:twoViewController];
[localVCArray addObject:twoNavCon];
[twoViewController release];
[twoNavCon release];
MyThirdViewController *threeViewController = [[MyThirdViewController alloc] init];
UINavigationController *threeNavCon = [[UINavigationController alloc] initWithRootViewController:threeViewController];
[localVCArray addObject:threeNavCon];
[threeViewController release];
[threeNavCon release];
// Set the tab bars array of view controllers to the localVCArray
[[self tabCon] setViewControllers:localVCArray animated:YES];
// Release the localVCArray, all of its contents are now retained by tabCon.
[localVCArray release];
// Add controls to window and show.
[window addSubview:[tabCon view]];
[window makeKeyAndVisible];
}
init 메소드에서 각 ViewController는 다음과 같은 작업을 수행 할 수 있습니다.
[[self tabBarItem] setImage:[dataSource tabConImg]];
[[self tabBarItem] setTitle:[dataSource name]];
[[self navigationItem] setTitle:[dataSource navConName]];
탭 막대에 사용 된 아이콘, 탭 막대의 제목 및 내비게이션 항목의 제목을 설정합니다.
제휴하지 않습니다 StackOverflow