Storyboardのコントローラをanimated:NOで呼ぶ方法とモーダルをいろんな方法で呼ぶ方法

このエントリーをはてなブックマークに追加
はてなブックマーク - Storyboardのコントローラをanimated:NOで呼ぶ方法とモーダルをいろんな方法で呼ぶ方法

Storyboardは非常に便利ですが、アプリの起動時にModalで、しかもpresentModalController:animated:NOで呼びたい時に、Storyboardだけではうまく呼ぶことが出来ません。
ios – Perform Segue on ViewDidLoad – Stack Overflow こちらの回答が参考になりました。

方法は、

-(void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (!CPOSData.loginSucced) {
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"CPOSLoginViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:vc animated:animated];
}
}

こんな感じです。storyboardから、ViewControllerを読み込んであげて、そのvcをpresentModalViewControllerで読んであげるという、凄くシンプルですね。ここで、気付いたのが、storyboardでは、幾つかモーダル表示のスタイルを選ぶことが出来て、ページのカールだったり、cross desolve(お互いが交互にフェードイン、フェードアウト)するような感じで、非常に便利な感じになっています。それが、

  • [vc setModalPresentationStyle:UIModalPresentationFullScreen];
  • [vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];

の2つのメソッドで設定出来るんですね。
PresentationStyleには、
typedef enum {
UIModalPresentationFullScreen = 0,
UIModalPresentationPageSheet,
UIModalPresentationFormSheet,
UIModalPresentationCurrentContext,
} UIModalPresentationStyle;

TransitionStyleには、

typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;

といろいろあるんですね。しかも、iOS3.系以降なので、iOS4系にも使えるのは嬉しいですね。

Comments

comments

Powered by Facebook Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.