탭 컨트롤 iOS 정보

코드를 사용하여 탭 전환 제어:

UITabBarController.selectedIndex를 사용하여 탭 표시줄 기반 응용 프로그램에서 프로그래밍 방식으로 탭을 전환하고 있습니다.해결하려는 문제는 보기 간의 전환을 애니메이션으로 만드는 방법입니다. 즉, 현재 탭의 보기에서 보기로의 전환 선택한 탭.
첫 번째 생각은 UITabBarControllerDelegate를 사용하는 것이지만 프로그래밍 방식으로 탭을 전환할 때 호출되지 않는 것 같습니다.지금 UITabBarDelegate.didSelectItem:을 전환 애니메이션을 설정하는 가능한 후크로 고려하고 있습니다.전환할 애니메이션 효과:

솔루션 1: 보기에서 전환(단순)
이것은 가장 쉽고 미리 정의된 UIView 전환 방법을 사용합니다.이 솔루션을 사용하면 이 방법이 우리를 위해 작업하기 때문에 보기를 관리할 필요가 없습니다.

// Get views. controllerIndex is passed in as the controller we want to go to.  UIView * fromView = tabBarController.selectedViewController.view; UIView * toView = [[tabBarController.viewControllers objectAtIndex:controllerIndex] view]; // Transition using a page curl. [UIView transitionFromView:fromView                     toView:toView                   duration:0.5                    options:(controllerIndex > tabBarController.selectedIndex ? UIViewAnimationOptionTransitionCurlUp : UIViewAnimationOptionTransitionCurlDown)                 completion:^(BOOL finished) {                     if (finished) {                         tabBarController.selectedIndex = controllerIndex;                     }                 }];

솔루션 2: 스크롤(더 복잡함)
더 복잡한 솔루션이지만 애니메이션을 더 많이 제어할 수 있습니다. 이 예에서는 보기를 켜고 끌 수 있습니다. 이 예에서는 보기를 직접 관리해야 합니다. 복잡한 솔루션:

// Get the views. UIView * fromView = tabBarController.selectedViewController.view; UIView * toView = [[tabBarController.viewControllers objectAtIndex:controllerIndex] view]; // Get the size of the view area. CGRect viewSize = fromView.frame; BOOL scrollRight = controllerIndex > tabBarController.selectedIndex; // Add the to view to the tab bar view. [fromView.superview addSubview:toView]; // Position it off screen. toView.frame = CGRectMake((scrollRight ? 320 : -320), viewSize.origin.y, 320, viewSize.size.height); [UIView animateWithDuration:0.3                  animations: ^{                      // Animate the views on and off the screen. This will appear to slide.                      fromView.frame =CGRectMake((scrollRight ? -320 : 320), viewSize.origin.y, 320, viewSize.size.height);                      toView.frame =CGRectMake(0, viewSize.origin.y, 320, viewSize.size.height);                  }                  completion:^(BOOL finished) {                      if (finished) {                          // Remove the old view from the tabbar view.                          [fromView removeFromSuperview];                          tabBarController.selectedIndex = controllerIndex;                                      }                  }];

탭 또는 탐색을 선택하시겠습니까? 두 가지 원칙:
1/UITabBarController는 창의 루트 보기여야 합니다. 2/탭 막대는 수정할 수 없지만 수정해야 합니다@property(nonatomic,readonly) UITabBar *tabBar).
뱃지 탭은 탭 항목에 있는 숫자를 나타냅니다/예를 들어 몇 개를 다운로드하지 않았는지 기록하고 어디에서 승인을 완료했는지, 몇 개를 업로드할 것인지 기록하십시오/
APP 스토어 프로그램에서 업데이트된 디지털 프롬프트 수를 볼 수 있습니다.사용자가 탭을 입력하고 트리거할 필요가 없습니다.itune의 다운로드 탭에서 배지 번호는 현재 활성 다운로드 수를 나타냅니다.이 숫자는 고객에게 클라이언트 중단 없이 새 다운로드를 완료하고 모든 다운로드가 완료되면 디지털 아워를 다운로드하도록 지시할 수 있습니다.
우리가 항상 보는 숫자에도 불구하고 숫자로 표시된 아이콘도 있습니다. 모든 uitabbaritem에는 nsstring 유형의 속성 배지 값이 있습니다. 일단 설정되면 거품이 그 안에 보장 수와 함께 나타날 수 있습니다.
import @interface ThirdViewController : UIViewController
//행동 양식
-(IBAction)badgeTabIcon:(id)발신자;
-(IBAction)clearTabBadge:(id)발신자;
@끝
-(IBAction)badgeTabIcon:(id)발신자{
self.tabBarItem.badgeValue = @"안녕하세요!";}
-(IBAction)clearTabBadge:(ID)발신자{
self.tabBarItem.badgeValue = nil;}

==== ====== 가속도계, 전환 및 키 보기에 대한 질문
그래서 TabBarController를 기반으로 하는 응용 프로그램이 있고 내 탭 중 하나에서 UIAccelerometer를 사용하고 있습니다.내가 보고 있는 문제는 탭을 전환하고 다시 전환할 때까지 가속도계에 액세스하고 사용할 수 있다는 것입니다.예를 들어 내 가속도계 탭1에 있고 탭2를 클릭하고 탭1로 돌아가서 가속도계가 꺼져 있습니다.

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[self becomeFirstResponder];

[accelerometer setDelegate:self];
...}

순서 문제에 주의하십시오. 위 코드의 문제는 willAppear/willXXXXX가 호출되고 실제로 구현 후에 didAppear가 되어야 한다는 것입니다. . . . . . . . . . . . .
내 viewController에서 viewDidAppear 및 viewDidDisappear 메소드를 재정의해야 한다는 것이 밝혀졌습니다.

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];}

- (void)viewDidDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewDidDisappear:animated];}


이 작업을 수행한 후 viewController 간에 전환한 후 motionBegan이 호출되었습니다. 이것이 누구에게나 도움이 되기를 바랍니다... 이전 탭으로 전환하면 첫 번째 응답을 재설정해야 합니다.

좋은 웹페이지 즐겨찾기