[iOS] 새로운 뷰컨트롤러를 시작하는 방법

iOS

이틀…

버튼을 눌렀을때 메뉴페이지를 띄우는 부분을 구현할 차례가 왔습니다.
아직 iOS개발 초짜다 보니 이런것을 알아가는데도 시간이 굉장히 오래 걸리는 것 같습니다.
무려 이틀이나 걸렸네요.
검색해도 잘 안나오는 것이 안드로이드처럼 접근하면 안될 것 같다는 느낌이 듭니다.
각설하고 정리를 시작합니다.

ViewController

프로젝트 생성시 만들어지는 뷰 컨트롤러를 Main으로 잡았습니다.

ViewController는 위와 같습니다.
오른쪽 위에 메뉴를 눌렀을때 MenuViewController가 뜨도록 할거에요.

코드는 필요있는 부분만 편집해서 작성하였습니다.

ViewController.h
1
2
3
4
5
6
7
8
9
10
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
//...
IBOutlet UIButton *buttonMenu; // 메뉴 버튼을 만들고
//...
}
- (IBAction)showMenu:(id)sender; // 메뉴 버튼이 눌렸을때 처리할 메소드

@end
ViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#import "ViewController.h"
#import "MenuViewController.h"

@interface ViewController ()

@end

@implementation ViewController
//...
- (IBAction)showMenu:(id)sender{
// StoryBoard 이름은 Mian.storyboard
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

// 메뉴 뷰컨트롤러 Identifier는 MenuViewController입니다.
MenuViewController *svc = [sb instantiateViewControllerWithIdentifier:@"MenuViewController"];
if (self.navigationController) {
[[self navigationController] pushViewController:svc animated:YES];
} else {
[self presentViewController:svc animated:YES completion:nil];
}
}
//...

@end

메뉴 뷰컨트롤러에서는 Back버튼을 만들어서 이전 컨트롤러로 돌아오는 방법을 구현할겁니다.

사실 ViewController위에 MenuViewController가 겹쳐있는 상태에서 MenuViewController를 종료한다는 것이 더 정확한 표현이겠네요.
어쨌거나 사용자로 하여금 뷰 컨트롤러를 왔다 갔다 하는 효과를 줄 수 있습니다.

MenuViewController.h
1
2
3
4
5
6
7
8
9
#import <UIKit/UIKit.h>

@interface MenuViewController : UIViewController{
IBOutlet UIButton *buttonBack;
}

-(IBAction)closePage:(id)sender;

@end
MenuViewController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import "MenuViewController.h"

@interface MenuViewController ()

@end

@implementation MenuViewController
//...
-(IBAction)closePage:(id)sender{
// 자기 자신을 종료합니다.
[self dismissViewControllerAnimated:YES completion:Nil];
}
//...
@end

이제 가장 중요한 설정이 있습니다.
메뉴 뷰컨트롤러의 Identifier를 정해주는 것인데요.
ViewController.m에서 작성한 아래의 구문에 들어가는 “MenuViewController”를 명시해야 합니다.

1
MenuViewController *svc = [sb instantiateViewControllerWithIdentifier:@"MenuViewController"];

스토리보드에서 MenuViewController를 클릭하고 우측 영역에서 3번째 탭
show the identity inspector를 열어서 아래와 Identity의 Storyboard ID를 설정해주세요.

마무리

설명 안한 부분에 대해서는 책에서도 금방 얻을 수 있는 정보거나 세세한 정보까지 정리할 시간이 없어서 하지 않는 경우가 많습니다.
앞으로 시간이 나고 블로깅 스킬이 늘어나면 글쓰는 시간이 줄면서 조금 더 자세히 쓸 수 있지 않을까 기대합니다.
그럼 이번 포스트는 여기서 마칩니다.