iOS App 에서 UiTabBarController 구성 요소 의 기본 사용법 을 자세히 설명 합 니 다.
우 리 는 컨트롤 의 효 과 를 대충 살 펴 보 았 는데,우 리 는 왜 그 가 흔히 볼 수 있다 고 말 하 는 지 알 수 있 었 다.
이것 이 바로 가장 간단 한 모형 이다.틀림없이 현재 기본적으로 70%의 응용 인터페이스 구조 가 모두 이 럴 것 이다.
Android 에 서 는 Activity Group 이나 현재 fragment 로 이 루어 집 니 다.한 용기 에 여러 개의 키 컨트롤 러 가 포함 되 어 있 습 니 다.
다음은 xib 파일 을 만 드 는 형식 으로 이러한 전체적인 구 조 를 실현 하 는 예 입 니 다.
물론 xcode 에서 우 리 는 이런 템 플 릿 이 바로 있다 는 것 을 알 게 될 것 이다.
그러나 템 플 릿 을 직접 사용 하면 코드 에 하위 레이아웃 을 직접 추가 해 야 한 다 는 것 을 알 수 있 습 니 다.저희 가 익숙 하지 않 아서 아 이 템,tabbar 같은 그림 문자 에 대한 사용자 정의 로 코드 에 있 는 api 를 찾 을 수 없습니다.
xib 로 이 루어 진다 고 할 수 있 습 니 다.
예전 에는 바로 base 가 있 었 다 고 합 니 다.window 템 플 릿,하지만 괜 찮 습 니 다.템 플 릿 은 저 에 게 빠 른 애플 리 케 이 션 을 만들어 주기 위해 서 일 뿐 입 니 다.우리 쪽 수 동 은 가장 기본 적 인 것 부터 시작 합 니 다.
1.우선 Empty 애플 리 케 이 션 을 만 듭 니 다.
2.만 든 후에 우 리 는 하나의 MainWindow.xib(물론 이 이름 은 마음대로 지 을 수 있 지만 규범 과 기본 으로 남 겨 진 습관)를 정 하여 응용 프로그램 이 시 작 될 때 불 러 오 는 첫 번 째 nib 파일 로 합 니 다.
새 xib 파일 에서 window 를 선택 할 수도 있 고 empt 일 수도 있 습 니 다.사실 차이 가 많 지 않 습 니 다.여기 서 window 템 플 릿 의 xib 파일 을 선택 하 십시오.
3.그리고 우 리 는 사실 XXXAppdelegate 와 이 xib 파일 을 연결 하려 고 합 니 다.그래서.h 파일 을 이렇게 정의 합 니 다:
#import <UIKit/UIKit.h>
@interface NonoAppDelegate : UIResponder <UIApplicationDelegate>
{
UIWindow *window;
UITabBarController *tabTarController;
}
@property (retain, nonatomic) IBOutlet UIWindow *window;// IBOutlet , xib , Mainxib
@property (retain, nonatomic) IBOutlet UITabBarController *tabTarController;
@end
4.그 다음 에 우 리 는 대체적으로 xib 파일 을 설계 하고 MainWindow.xib 파일 을 엽 니 다.우 리 는 대체적으로 보기 요 소 를 보 았 습 니 다.하 나 는 파일 소유자 Filesowner 이 고 그 다음 에 reponder 입 니 다.어떻게 사용 하 는 지,구체 적 으로 무엇 을 하 는 지 명확 하지 않 습 니 다)그리고 가장 중요 한 것 은 Object 라 는 태그 에 있 는 요소 입 니 다.이때 하나의 window 입 니 다.
우선 파일 소유자 클래스 를 UIApplication 으로 변경 하고 File's Owner 탭 을 클릭 한 후 오른쪽 속성 표시 줄 에서 Indentity 를 선택 합 니 다. inspector,이때 customeclass 가 NSobject 인 것 을 보 았 습 니 다.
UIApplication 으로 바 꾸 면 File's Owner 의 Outlets 가 delegate 의 출력 구 를 사용 한 것 을 발견 할 수 있 습 니 다.지난 편 을 보면 outlets 와 reference outlet 에 대해 알 수 있 습 니 다.
이 동 동 등 은 실례 적 인 대상 을 가리 킬 수 있 을 것 이다.
5.자,그럼 object 에 delegate 대상 을 추가 합 니 다.조작 은 간단 합 니 다.오른쪽 컨트롤 그룹 에 있 습 니 다.
이 대상 을 xib 아래 Object 태그 로 끌 어 다 놓 으 면,
그리고 우 리 는 이 대상 을 정 하 는 데 서 왔 다.위 에서 알 고 있 는 바 에 의 하면 우 리 는 우리 가 delegate 와 유사 한 대상 이 필요 하 다 는 것 을 대체적으로 알 수 있다.맞다.
우리 AppDelegate 딱 이런 거 잖 아.그래서 자 연 스 럽 게 이 object 를 선택 하고 오른쪽 속성 표시 줄 에서 custom class 를 Nono AppDelagate 로 설정 합 니 다.
그리고 File's Owner 를 누 르 면 출력 구 delegate 와 우리 가 방금 올 린 Nono Appdelagate 를 연결 합 니 다.
6.위 설정 을 마 친 후에 우 리 는 Object 아래 의 XXXAppDelegate 를 클릭 한 다음 에 오른쪽 속성 표시 줄 의 Outlets 를 볼 수 있 습 니 다.참,우 리 는 이 파일 의.h 에서 두 개의 출력 구 를 설명 한 적 이 있 습 니 다.지금 우 리 는...
이런 대상 두 개 를 만 들 고 연결 해 야 합 니 다.window 는 이때 이미 있 습 니 다.UITab BarController 가 없습니다.그럼 오른쪽 에서 끌 고 오 겠 습 니 다.
그리고 출력 구 와 대상 을 연결 합 니 다.
현재,가장 기본 적 인 tabbarcontroller 레이아웃 프레임 워 크 는 ok 입 니 다.현재 xib 파일 은 다음 과 같 습 니 다.
그리고 우 리 는 AppDelegate.m 을 열 어 실현 과 수정 을 진행 합 니 다.
#import "NonoAppDelegate.h"
@implementation NonoAppDelegate
@synthesize window ;
@synthesize tabTarController ;
- (void)dealloc
{
[self.window release];
[self.tabTarController release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = self.tabTarController;
[self.window makeKeyAndVisible];
return YES;
}
응,그렇게 간단 해.이론 적 으로 우 리 는 지금 시 뮬 레이 터 를 시작 한 후에 프로그램 을 시작 할 수 있다.
하지만 일어나 보 니 공백 이 었 다.
우 리 는 응용 프로그램의 main.m 에서 본다.
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([NonoAppDelegate class]));
}
}
그리고 사용자 정의 delegate 클래스 에 적용 되 었 습 니 다.그리고 문 제 를 발 견 했 습 니 다.이 절차 에 따라 우리 MainWindow.xib 파일 은 불 러 오지 않 은 것 같 습 니 다.이것 이 맞습니다.예전 에 저희 가 controller 의 xib 파일 을 정의 한 후에 initWithNibName 이 있 었 고 UIApplication 형식의 xib 파일(실제 상황 에서 전체 응용 프로그램 이 가장 먼저 시작 할 클래스)이 있 었 습 니 다.
이런 로 딩 이 라 고 합 니 다.
이 구체 적 인 내용 은 지난 편 에서 ios 응용 프로그램의 시작 내용 을 언급 한 적 이 있 는데,좋 은 박문 이 좋 은 설명 을 해 주 었 다.
지금 우 리 는 main.h 코드 를 약간 수정 할 수 있다.
#import <UIKit/UIKit.h>
#import "NonoAppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, nil);
}
}
원래 네 번 째 매개 변 수 는 AppDelegate 를 지정 하 는 것 이 었 습 니 다.그러나 우 리 는 MainWindow.xib 를 불 러 올 때 delegate 대상 을 불 러 올 때 우 리 는 AppDelegate 류 를 연결 했다 는 것 을 알 고 있 습 니 다.네 번 째 매개 변수 가 지정 되면 이 종 류 는 두 번 실례 화 된 것 같 습 니 다.더 구체 적 인 내용 은 위 에서 언급 한 블 로 그 를 참고 하여 보 세 요.
7.됐다.가장 기본 적 인 tabbar 인터페이스 가 완성 되 어야 합 니 다.다음은 하위 컨트롤 러 를 안에 추가 하 는 것 입 니 다.
우선 UITab BarController 라 는 컨트롤 을 익 혀 보 겠 습 니 다.
인터페이스 에서 우 리 는 이 컨트롤 안에 대체적으로 어떤 것 이 있 는 지 추측 할 수 있다.
1>.하위 컨트롤 을 관리 하 는 것 과 비슷 한 것 이 있 을 것 입 니 다.
2>화면 아래 에서 바 꿔 야 겠 다 tabBar
3>물론 델 리 게 이 트 같은 것 이 대리 대상 이라는 것 을 발견 했다.
물론 위 는 코드 에 있 습 니 다.우 리 는 이러한 속성 을 얻 고 해당 하 는 조작 을 합 니 다.
xib 파일 에 서 는 직관 적 으로 보인다 고 할 수 있 습 니 다.
1>Tab bar 에는 하나 이상 의 Tabbar Item 으로 구 성 된 배열 이 들 어 있 으 며,각각 itm 은 하나의 ViewController 에 대응 합 니 다.
2>아래 First,Second 등 은 모든 Item 에 대응 하 는 Controller 입 니 다.여기 도 주의해 야 합 니 다.기본 적 인 우 리 는 하 나 를 끌 어 들 입 니 다.
TabBarItem,일반적으로 우 리 는 받 아야 할 XXxcontroler.xib 파일 을 설정 합 니 다.
이후 custom class 를 대응 하 는 XXXController 클래스 로 바 꿔 야 합 니 다.기본 클래스 는 UIViewController 이기 때 문 입 니 다.이것 은 응용 프로그램 이 시 작 된 후에 잘못 보고 할 것 이다.
3>tabbarItem 에 title,시스템 의 기본 아이콘,그리고 사용자 정의 아이콘,그리고 badgeValue 를 설정 할 수 있 습 니 다.바로 위 탭 에 있 는 모든 빨간색 값 입 니 다.
이 건 안 드 로 이 드 보다 선견지명 이 훨씬 많아.
4>아래쪽 버튼 이 5 개 를 넘 으 면 시스템 에 more 버튼 이 자동 으로 추 가 됩 니 다.more 를 누 르 면 나머지 버튼 이 표 시 됩 니 다.
8.UITabbarController 좌우 슬라이딩 탭 전환
Tabbar ViewController 마다 다음 코드 를 추가 해 야 합 니 다.기본 클래스 에 추가 하 는 것 을 권장 합 니 다.
ViewDidLoad
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedRightButton:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedLeftButton:)];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:swipeRight];
애니메이션 전환 효 과 를 포함 하여 함수 2 개 를 추가 합 니 다.
- (IBAction) tappedRightButton:(id)sender
{
NSUInteger selectedIndex = [self.tabBarController selectedIndex];
NSArray *aryViewController = self.tabBarController.viewControllers;
if (selectedIndex < aryViewController.count - 1) {
UIView *fromView = [self.tabBarController.selectedViewController view];
UIView *toView = [[self.tabBarController.viewControllers objectAtIndex:selectedIndex + 1] view];
[UIView transitionFromView:fromView toView:toView duration:0.5f options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) {
if (finished) {
[self.tabBarController setSelectedIndex:selectedIndex + 1];
}
}];
}
}
- (IBAction) tappedLeftButton:(id)sender
{
NSUInteger selectedIndex = [self.tabBarController selectedIndex];
if (selectedIndex > 0) {
UIView *fromView = [self.tabBarController.selectedViewController view];
UIView *toView = [[self.tabBarController.viewControllers objectAtIndex:selectedIndex - 1] view];
[UIView transitionFromView:fromView toView:toView duration:0.5f options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
if (finished) {
[self.tabBarController setSelectedIndex:selectedIndex - 1];
}
}];
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.