IOS:UIViewController
View Life cycle
UIViewController의 생명주기와 관련된 메소드의 호출 의미는 아래와 같다.
- viewDidLoad: view가 load 되었을때 호출.
- viewWillAppear: view가 보일 준비가 끝날을 때 호출.
- viewDidAppear: view가 완전히 보일 때 호출.
- viewWillDisappear: view가 사라질 준비가 끝날을 때 호출.
- viewDidDisappear: view가 완전히 사라졌을 때 호출.
Change View
- 우선,
IBAction
인터페이스를 추가한다.```objc - (IBAction) moveSecondView: (id) sender;</li> <li markdown="1"> 화면을 구성하고, 버튼을 생성해서 moveSecondView 를 연결한다. </li> <li markdown="1"> 두번째 뷰의 헤더 파일을 Import 한다. </li> <li markdown="1"> 헤더파일에서 지정한 액션을 구현한다.```objc - (IBAction) moveSecondView: (id) sender { SecondView *secondview = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; // SecondView의 초기화 [self.view addSubview:secondview.view]; // 현재 뷰에서 SecondView를 추가하겠다는 의미 }
Root ViewController
첫 번째 ViewController를 설정할 경우 AppDelegate
에서 아래와 같이 추가하면 된다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
// This code !!!
MainViewController * view = [[MainViewController alloc] init];
self.window.rootViewController = view;
return YES;
}
Top Index Modal ViewController
최상위 모달(Modal)뷰로 출력하는 메소드 구현은 아래와 같다.
#pragma mark - Modal VC
- (void)presentModalVC:(UIViewController*)controller animated:(BOOL)animated
{
// 가장 최상위 모달로 이동.
UIViewController* visibleRootViewController = self.tabBarController;
while (visibleRootViewController.presentedViewController != nil)
{
visibleRootViewController = visibleRootViewController.presentedViewController;
}
// 최상위 모달 위에 모달을 띄운다.
[visibleRootViewController presentModalViewController:controller animated:animated];
}
- (void)dismissModalVCAnimated:(BOOL)animated
{
[self.tabBarController dismissModalViewControllerAnimated:animated];
}
Deprecated presentModalViewController
As a follow up to the last post, I also had presentModalViewController all over my app and it too has been deprecated. I quickly found the answer:
can be replaced by:
Hide Status Bar
iOS7 에서 StatusBar를 숨기고 싶을 경우 아래의 코드를 추가하면 된다.
// Insert viewDidLoad
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
// iOS 7
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
} else {
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
// Override prefersStatusBarHidden
- (BOOL)prefersStatusBarHidden
{
return YES;
}
StatusBar를 출력하고 싶을 경우 prefersStatusBarHidden
함수의 반환값을 NO
로 변경하면 된다.