スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Swift】Segueが機能しない場合

例えばこんなことを実現したい場合。

タイトルページ(一番初めのシーン)
はじめてアプリを開いた → 設定画面へ遷移 
過去にも使ったことがあるかを判別 → ゲーム画面へ遷移


この場合、タイトルページで「はじめて開いたか」を判別して正しい方向へ誘導しなければならない。
画面繊維はSegueを使うと思う。
Segueの基本的な使い方はこの辺を見ればいいのだが「ボタンでは上手く遷移するのに、コードでは上手くいかない」とハマるケースがある。
例えば上記の例をコードにすると、


override func viewDidLoad() {
if(firstOpen){
self.performSegueWithIdentifier("gotoSettingScene",sender:nil)
}else{
self.performSegueWithIdentifier("gotoGemeScene",sender:nil)
}
}


こんな感じだがこれでは動かない。
かといってこうしてボタンとつなぐと上手く動く。


@IBAction func buttonpush(sender: UIButton) {
self.performSegueWithIdentifier("gotoSettingScene",sender:nil)
}


これが意味するところは「遷移のタイミングがうまくない」ということ。
つまり、ViewDidLoadのタイミングではまだ「遷移してもいい」体制が整っておらず、ボタンを押すタイミングには「遷移してもいい」体制が整っているということ。
結論、下記のようにすると上手くいく。


override func viewDidAppear(animated:Bool) {
if(firstOpen){
self.performSegueWithIdentifier("gotoSettingScene",sender:nil)
}else{
self.performSegueWithIdentifier("gotoGemeScene",sender:nil)
}
}


viewDidLoad -> viewDidAppearに変えただけ。
この辺のタイミングはきちんと理解しておかないとこういう時にはまっちゃいます。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。