1. 시작 전에 프로젝트 코드 기본 세팅하고 오기
https://growingsaja.tistory.com/869
2. 프로젝트 그룹 및 파일 구성
3. 왼쪽에서 1번째 메뉴탭 누르면 나오는 화면 뷰
// vim Controller/FirstViewController.m
#import <UIKit/UIKit.h>
// FirstViewController라는 이름의 뷰 컨트롤러 클래스를 선언합니다.
@interface FirstViewController : UIViewController
@end
// vim Controller/FirstViewController.m
#import <Foundation/Foundation.h>
#import "FirstViewController.h"
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 레이블을 생성하고 뷰에 추가합니다.
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(40, 100, 240, 40)];
label.text = @"첫 번째 뷰입니다.";
[self.view addSubview:label];
}
@end
4. 왼쪽에서 2번째 메뉴탭 누르면 나오는 화면 뷰
// vim Controller/SecondViewController.h
#import <UIKit/UIKit.h>
// SecondViewController라는 이름의 뷰 컨트롤러 클래스를 선언합니다.
@interface SecondViewController : UIViewController
@end
// vim Controller/SecondViewController.m
#import <Foundation/Foundation.h>
#import "SecondViewController.h"
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 뷰의 배경색을 설정합니다.
self.view.backgroundColor = [UIColor grayColor];
// 레이블을 생성하고 뷰에 추가합니다.
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(60, 120, 280, 60)];
label.text = @"두 번째 뷰입니다.";
[self.view addSubview:label];
}
@end
5. 왼쪽에서 3번째 메뉴탭 누르면 나오는 화면 뷰
// vim Controller/ThirdViewController.h
#import <UIKit/UIKit.h>
// SecondViewController라는 이름의 뷰 컨트롤러 클래스를 선언합니다.
@interface ThirdViewController : UIViewController
@end
// vim Controller/ThirdViewController.m
#import <Foundation/Foundation.h>
#import "ThirdViewController.h"
@implementation ThirdViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 뷰의 배경색을 설정합니다.
self.view.backgroundColor = [UIColor orangeColor];
// 레이블을 생성하고 뷰에 추가합니다.
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80, 150, 300, 800)];
label.text = @"세 번째 뷰입니다.";
[self.view addSubview:label];
}
@end
6. 하단 메뉴탭바 뷰
// vim MyTabBarController.h
#import <UIKit/UIKit.h>
// MyTabBarController라는 이름의 탭바 컨트롤러 클래스를 선언합니다.
@interface MyTabBarController : UITabBarController
@end
// vim MyTabBarController.m
#import <Foundation/Foundation.h>
#import "MyTabBarController.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"
@implementation MyTabBarController
- (void)viewDidLoad {
[super viewDidLoad];
// FirstViewController를 생성하고 속성을 설정합니다.
FirstViewController *firstTabMainVC = [[FirstViewController alloc] init];
UINavigationController *naviVC1 = [[UINavigationController alloc] initWithRootViewController:firstTabMainVC];
naviVC1.tabBarItem.title = @"첫 번째";
naviVC1.tabBarItem.image = [UIImage systemImageNamed:@"camera"];
// SecondViewController를 생성하고 속성을 설정합니다.
SecondViewController *secondTabMainVC = [[SecondViewController alloc] init];
UINavigationController *naviVC2 = [[UINavigationController alloc] initWithRootViewController:secondTabMainVC];
naviVC2.tabBarItem.title = @"두 번째";
naviVC2.tabBarItem.image = [UIImage systemImageNamed:@"house"];
// ThirdViewController를 생성하고 속성을 설정합니다.
ThirdViewController *thirdTabMainVC = [[ThirdViewController alloc] init];
UINavigationController *naviVC3 = [[UINavigationController alloc] initWithRootViewController:thirdTabMainVC];
naviVC3.tabBarItem.title = @"세 번째";
naviVC3.tabBarItem.image = [UIImage systemImageNamed:@"trash.fill"];
// 생성된 뷰 컨트롤러를 탭바 컨트롤러에 배치합니다.
NSArray *viewControllers = @[naviVC1, naviVC2, naviVC3];
self.viewControllers = viewControllers;}
@end
7. 메인 뷰컨트롤러 소스코드 수정
// vim ViewController.h
// UIKit 프레임워크의 헤더 파일을 import합니다. UIKit은 iOS 애플리케이션 개발에 필요한 다양한 클래스와 기능을 제공합니다.
#import <UIKit/UIKit.h>
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (선언부)
2. 전역변수 , 메소드 , 인스턴스변수 (클래스 생성자) 선언
// -----------------------------------------
*/
@class MyTabBarController;
// -----------------------------------------
@interface ViewController : UIViewController
@property (strong, nonatomic) MyTabBarController *mainBottomMenuTabBarController;
// -----------------------------------------
@end
// -----------------------------------------
// vim ViewController.m
// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"
#import "SettingView.h"
#import "MyTabBarController.h"
// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
// -----------------------------------------
@implementation ViewController
// -----------------------------------------
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/
// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
// 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
[super viewDidLoad];
NSLog(@"[뷰 로드 실시] ::: ViewController >> viewDidLoad()");
}
// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"[뷰 로드 완료] ::: ViewController >> viewWillAppear()");
}
// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"[뷰 화면 표시] ::: ViewController >> viewDidAppear()");
[self mainFirst];
}
// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"[뷰 정지 상태] ::: ViewController >> viewWillDisappear()");
}
// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"[뷰 종료 상태] ::: ViewController >> viewDidDisappear()");
}
- (void)mainFirst {
NSLog(@"[테스트 메소드 수행] ::: ViewController >> mainFirst()");
/*
// ------------------------------------
[요약 설명]
// ------------------------------------
Main View 진입시 나오는 화면입니다.
// ------------------------------------
*/
self.mainBottomMenuTabBarController = [[MyTabBarController alloc] init];
// 이전에 추가되어 있던 subview를 제거합니다.
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
// MyTabBarController의 view를 ViewController의 view에 추가합니다.
[self.view addSubview:self.mainBottomMenuTabBarController.view];
}
// -----------------------------------------
@end
// -----------------------------------------
8. 프로젝트 실행 결과물
'Development > iOS' 카테고리의 다른 글
[Objective-C] 앱 만들기 입문 - 3 : 상하(위아래) 스크롤 기능 넣기 (0) | 2023.07.05 |
---|---|
[Objective-C] 앱 만들기 입문 - 2 : 세로 정렬 카드뷰 만들고 안에 문구 및 활성화 스위치 넣기 (0) | 2023.06.30 |
[Objective-C] 입문하기 - 15 : extern const 사용해 외부 공유 가능한 상수 정의 및 호출 (0) | 2023.06.30 |
[Objective-C] 입문하기 - 14 : 날짜 데이터 활용 및 타이머 구현 실습 (0) | 2023.06.27 |
[Objective-C] 입문하기 - 13 : init 클래스 생성자 초기화 및 인스턴스 초기 데이터와 함께 생성해 사용하기 (0) | 2023.06.27 |