탭 컨트롤 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
//행동 양식
-(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이 호출되었습니다. 이것이 누구에게나 도움이 되기를 바랍니다... 이전 탭으로 전환하면 첫 번째 응답을 재설정해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CRT는 힙 버퍼가 끝난 후 애플리케이션이 메모리에 쓴 것을 감지했습니다.많은 사람들이 다른 설명을 가지고 있습니다. 제가 겪은 문제는 열려있는 메모리 공간이 작동을 위한 메모리 공간보다 작습니다. 즉, 여유 메모리가 범위를 벗어났습니다. 이것은 연결 목록 구조의 메모리를 여는 코드입니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.