Skip to content

IOS:UIViewController

View Life cycle

UIViewController의 생명주기와 관련된 메소드의 호출 의미는 아래와 같다.

  • viewDidLoad: view가 load 되었을때 호출.
  • viewWillAppear: view가 보일 준비가 끝날을 때 호출.
  • viewDidAppear: view가 완전히 보일 때 호출.
  • viewWillDisappear: view가 사라질 준비가 끝날을 때 호출.
  • viewDidDisappear: view가 완전히 사라졌을 때 호출.

Change View

  1. 우선, 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:

// Deprecated in iOS 6.0
[self presentModalViewController:pNewController animated:YES];

can be replaced by:

[self presentViewController:pNewController animated:YES completion:nil];

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로 변경하면 된다.

Favorite site