LoginSignup
67
68

More than 5 years have passed since last update.

segue による画面遷移メモ

Last updated at Posted at 2014-04-29

参考資料

StoryboardのUnwind Segueの使い方

Storyboard の画面遷移

push segue と NavigationController メモ

segue

segue による画面遷移

  1. [遷移元]- (BOOL)shouldPerformSegueWithIdentifier
    • 遷移するかどうかの判定
    • [identifier isEqualToString:@"id of segue"]
  2. [遷移元]- (void)prepareForSegue
    • 遷移実行に伴う値のやり取り
    • [[segue identifier] isEqualToString:@"id of segue"])
  3. (unwind segue なら)[遷移先]unwind segue メソッド(自分で定義したメソッド)
    • (IBAction)unwindSegueToXxx:(UIStoryboardSegue*)segue

segue に id(identifier) を設定する

通常の segue の場合

Storyboard 上で segue を選択して、identifier に文字列を入力します。

スクリーンショット 2014-05-11 16.16.21.png

unwind segue の場合

スクリーンショット 2014-05-11 16.23.10.png

modal segue で単に前の画面に戻る

下記自体は segue ではないので、前述した shouldPerformSegueWithIdentifier とか prepareSegue などは発生しない。
* [self dismissViewControllerAnimated:YES completion:NULL]

関連メモ

  • 制御のために segue には identifier(文字列) を設定する。
  • modal segue を明示的に呼び出す: performSegueWithIdentifier

画面遷移に関連して UIViewController の関連メソッド

- (void)viewDidLoad
{
    // View が表示される最初の1回だけ呼ばれる
    NSLog(@"viewDidLoad");
}

- (void)viewWillAppear:(BOOL)animated
{
    // View が表示される直前に呼ばれる
    NSLog(@"viewWillAppear");
}

- (void)viewDidAppear:(BOOL)animated
{
    // View の表示完了後に呼ばれる
    NSLog(@"viewDidAppear");
}

- (void)viewWillDisappear:(BOOL)animated
{
    // View が別の View へ切り替わる直前に呼ばれる
    NSLog(@"viewWillDisappear");
}

- (void)viewDidDisappear:(BOOL)animated
{
    // View が別の View へ切り替わった後に呼ばれる
    NSLog(@"viewDidDisappear");
}

実際の呼び出しの流れ

最初の画面が 1stViewController、そこから modal で 2ndViewController を呼び出した時の流れ。

  1. 最初の画面を表示
    1. -[1stViewConroller viewDidLoad]
    2. -[1stViewConroller viewWillAppear:]
    3. -[1stViewConroller viewDidAppear:]
  2. modal segue で2番目の画面を呼び出す
    1. -[1stViewConroller shouldPerformSegueWithIdentifier:sender:]
    2. -[1stViewConroller prepareForSegue:sender:]
    3. -[2ndViewConroller viewDidLoad]
    4. -[1stViewConroller viewWillDisappear:]
    5. -[2ndViewConroller viewWillAppear:]
    6. -[2ndViewConroller viewDidAppear:]
    7. -[1stViewConroller viewDidDisappear:]
  3. unwindSegue で最初の画面に戻る
    1. -[2ndViewConroller shouldPerformSegueWithIdentifier:sender:]
    2. -[2ndViewConroller prepareForSegue:sender:]
    3. -[1stViewConroller unwindSegueTo1stViewConroller:]
    4. -[2ndViewConroller viewWillDisappear:]
    5. -[1stViewConroller viewWillAppear:]
    6. -[1stViewConroller viewDidAppear:]
    7. -[2ndViewConroller viewDidDisappear:]
67
68
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
67
68