カテゴリー
SugiBlog Webデザイナー・プログラマーのためのお役立ちTips

Segueの条件分岐

TableViewやCollectionViewを使っているとき、タップしたセルによって遷移するシーンを分岐したい時の方法をご紹介します。
今回はCollectionViewを使っています。

以下の画像のような状態にしたいと思います。

通常、セルからcontrol+ドラッグでセグエを設定するかと思いますが、それだとどちらかのシーンにしかセグエを設定できません。
そのため、View Controllerからセグエを設定します。


ドキュメントアウトラインにてView Controllerを選択し右クリックします。
[Triggered Segues]-[manual]の+をcontrol+ドラッグし遷移したい1つ目のView Controllerでドロップします。

表示方法はShowを選択。

同様に2つ目のView Controllerにも設定します。 続きを読む…»

4,161 views

Navigation Controllerを非表示で使う

Navigation Controllerは非常に便利ですね。
でも画面構成的にどうしても上部に表示されるナビゲーションバーを非表示にしたいことがあります。

ドキュメントアウトラインの[Navigation Controller Scene]-[Navigation Controller]-[Navigation Bar]を選択し、Attributes inspectorを開きます。
Drawingのところの「Hidden」にチェックを入れます。

これだけだと、ナビゲーションバーは非表示になりましたが、上部に隙間が出来る場合があります。
そんなときはviewDidLoadに次のコードを記述すれば解決できます。

self.automaticallyAdjustsScrollViewInsets = false

Navigation ControllerにもAttributes inspectorを開けば、Bar Visibilityのところに「Shows Navigation Bar」のチェックがあり、こちらを外せば非表示にはなるのですが、画面左端からスワイプしても戻れなくなりました。

Xcode: 8.3.1
Swift: 3.1
OS: Sierra 10.12

2,373 views

ジェスチャーを扱う UIGestureRecognizer

UIGestureRecognizerはジェスチャー全般を扱うことができるクラスです。
タップやスワイプ、ロングプレス等のジェスチャーを扱うことができます。

今回はスワイプの例を挙げますが、その他も似た感じで実装することが可能です。

まずは、実行するメソッドを用意します。

func rightSwipeView(sender: UISwipeGestureRecognizer) {
    // ここに処理を記述
}

次にviewDidLoad内に以下を記述します。

let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(myViewController.rightSwipeView(sender:)))
rightSwipe.direction = .right
self.view.addGestureRecognizer(rightSwipe)

Xcode: 8.3.1
Swift: 3.1
OS: Sierra 10.12

1,551 views

前の画面に戻る unwind segue

複数のシーンを作成し、移動するアプリを制作する際、Androidのように戻るボタンがありませんので、その辺もきちんと実装しておく必要があります。
NavigationControllerを使えば簡単なのですが、今日はそれを使わない場合の方法をご紹介します。

遷移元のViewControllerに以下のコードを追加します。

@IBAction func unwindMe(segue: UIStoryBoardSegue) {
}

中身は何もなくて構いません。

次に遷移先のViewControllerに戻るボタンを配置します。
配置したボタンをControlを押しながらExitに結び付けます。

これだけで遷移元のViewControllerに戻ることができます。

また、コードで実行したい時は、ドキュメントアウトラインでExitの下に追加されたUnwind segue…を選択し、Identifierを設定します。

ここでは「backToMain」とします。

後は以下のコードを実行します。

performSegue(withIdentifier: "backToMain", sender: self)

ちなみに、最初のコードを以下のようにすれば、どの遷移先から戻ってきたかによって処理を分岐できるようです。

@IBAction func unwindMe(segue: UIStoryBoardSegue) {
    if segue.identifier == "backToMain" {
        //....何らかの処理
    }
}

Xcode: 8.3.1
Swift: 3.1
OS: Sierra 10.12

6,880 views

iOSでデータベースRealmを使う

iOSアプリでデータベースを使ってみたいと思います。
色々あるようですが、今回は「Realm(レルム)」を選定しました。
Realm公式サイト:https://realm.io/jp/

まずはインストールから始めてみましょう。
realmのドキュメントを参考に進めます。

CocoaPodsのSpecリポジトリ更新

ターミナルを開き、コマンドを実行

pod repo update

Realmのインストール

インストールしようとしているプロジェクトのディレクトリに移動します。

cd <path-to-project>

続きを読む…»

1,498 views