見出し画像

【徒然iOS】気ままにUIKit74〜Segue シーンとシーン接続して画面遷移〜

概要

このマガジンは四十を過ぎたおっさんが、

を参考にStoryboardでiOSアプリを完全に趣味で楽しんでいるだけな記事を気ままに上げてます。

今回

をハイ、レッツゴ🕺
前々回で、ボタンを配置して、各ビューを繋いでたアレの、
Navigation Controllerのないバージョンと思っていただけると〜〜〜〜💦

前準備

念の為、

  1. バックアップ

  2. 新しいクラス

  3. ビューコントローラの追加

  4. イニシャルビューの変更

をいつも通りやってから本題へ💃

てな感じかな💦

本題

Segueとは

シーンとシーンを接続し画面遷移を行うための部品

前々回ですでにやってるから、すでにSegueがいっぱい💦

⒈もう一個、ビューを配置して、色を変えて、ボタンを配置

てな感じで💦
変えた🕺
見やすいように色まで変更〜〜〜〜

⒉ドラッグしてModalを選択

と、思ったらすでにModalっての自体はない👀
ので、Present Modallyってのを選んで
らしくなってきたね、、、

とりあえず、SizeClassもチェックを入れとこう

と思ったら、SizeClassの名目ではすでにチェック項目はないね。
おそらくTraitVariationだな💦

⒊シミュレータを実行

起動直後
ハイ、繋がりました🕺

っと、ここでサイト記事と色が逆なので〜〜〜〜

色を記事どおりにした🙇

⒋コード組み込み

 //青画面に戻るときの呼び出しメソッド
 @IBAction func prevGamen(segue: UIStoryboardSegue) {
        //処理無し
 }

を組み込めと言ってるようなので、、、

組み込んだところ〜〜〜
Exitに接続〜〜〜
前へボタンを押すと〜〜〜
戻った〜〜〜〜🕺

⒌条件によって、遷移先を変更

とりあえず、コイツを削除〜〜〜
矢印が消えた👀
もう一個、オレンジのビューを追加〜〜〜〜
青→緑〜〜〜〜
青→オレンジ〜〜〜
結果〜〜〜
オレンジにボタン追加〜〜〜〜💃
前に戻れるようにExit接続〜〜〜
identifier 1個目〜〜〜
identifier 2個目〜〜〜

⒍次へボタンをアクション接続

ひとつ目の挙動〜〜〜
ふたつ目の挙動〜〜〜

⒎コード組み込み

//
//  ViewController.swift
//
import UIKit
class ViewController: UIViewController {
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    //青画面に戻るときの呼び出しメソッド
    @IBAction func prevGamen(segue: UIStoryboardSegue) {
        //処理無し
    }
    //ボタンドラッグ時の呼び出しメソッド
    @IBAction func dragExit(sender: UIButton) {
        //識別子「GreenSegue」のセグエを実行する。
        performSegueWithIdentifier("GreenSegue", sender: nil)
    }
    //ボタンダブルタップ時の呼び出しメソッド
    @IBAction func doubleTap(sender: UIButton) {
        //識別子「YellowSegue」のセグエを実行する。
        performSegueWithIdentifier("YellowSegue", sender: nil)
    }
}

⒏シミュレータ実行

次へボタンをダブルタップ後
次へボタンを押したままボタン外へドラッグ後

サイト記事としては、以上🕺

ブラッシュアップ

AutoLayoutだけやっとこう

とりあえず、今回追加した3つのビューの、
黄色三角が消えるまで繰り返し〜〜〜
ハイ、消えた🕺
シミュレータも問題なし💃

今回のコード(まとめ)

class SegueStandardViewController: UIViewController {
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    //青画面に戻るときの呼び出しメソッド
    @IBAction func prevGamen(segue: UIStoryboardSegue) {
        //処理無し
    }
    //ボタンドラッグ時の呼び出しメソッド
    @IBAction func myDragExit(_ sender: UIButton) {
        //識別子「GreenSegue」のセグエを実行する。
        performSegue(withIdentifier: "GreenSegue", sender: nil)
    }
    //ボタンダブルタップ時の呼び出しメソッド
    @IBAction func myDoubleTap(_ sender: UIButton) {
        //識別子「YellowSegue」のセグエを実行する。
        performSegue(withIdentifier: "OrangeSegue", sender: nil)
    }
}

ちょっと試しに、、、

NavigationControllerと今回の青画面を繋いでみよう👀
どうなるかドキドキ💦

繋いで〜〜〜
Showに〜〜〜
NavigationControllerにis Initializeを設定し直して〜〜〜
やると〜〜〜
ここまでは開くけど、ボタンが反応しない💦
Modallyで繋ぎ直すと〜〜〜〜
ダブルタップまでは反応したね👀
show detailで繋ぎ直し〜〜〜
modallyの時とおんなじ🤔

他のも試してみたけど、結果は同じ。なんかNavigationControllerと詳細なSegueは、

思ったとおり、相性悪いね藁🤣
たしか、Customでハンドラーを使うとできた気がするけど、
この記事の趣旨と反するので、
💃残りの記事を一旦、進めよ🕺

Apple公式

さて、次回は

をレッツゴする🕺

いいなと思ったら応援しよう!