SwiftによるiOSアプリ開発基本講座

シーン間でのオブジェクトの受け渡し

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
PhotoViewerの最初と次のシーンの間で、写真のデータを受け渡すためのコードを書く方法を説明します。
講師:
06:52

字幕

このレッスンでは フォトビューワの最初のシーンと次のシーンの間で写真のデータを受け渡すためのコードを書く方法を説明します。それでは 一番最初に表示されるこの テーブルビューを表しているPhotosTableViewController.swiftこちらを使って作業していきましょう。この PhotosTableViewController.swift のファイルの一番最後のところまでスクロールすると このようにprepareForSegueというメソッドが見つかります。まずはこのコメントアウトを上のこの / と / を 消してコメントアウトを外しておきます。そしてこのビューコントローラから次のビューコントローラへデータを渡すために次のビューコントローラのオブジェクトを取得します。それを行うための方法が こちらにコメントの形で書いてあるのですがこれちょっとObjectiv-C の形で書かれてしまっているのでこれを Swift の形で書いてやる必要があります。secondScene =segue.destinationViewControllerこのように書くことで次の ビューコントローラを取得することができます。 segue というのは 例のこのストーリーボードのそれぞれの矢印を表すこのオブジェクトこれが segue ですからこの segue に対してdestinationViewController というのを問い合わせてやると次のビューコントローラが取得できます。そしてここに as! と書いてこれが ディスプレイビューコントローラである とということを 明示してください。はい それではこれで 次のビューコントローラが取得できましたのでこの 次のビューコントローラにデータを受け渡したいと 思います。データを受け渡すときには 何が今選択されているのかということに応じてデータを取得する必要があるんですがまずは どこが選択されているのかということを確認するためにlet 文を使ってインデックスパスを 取得します。self.tableView.indexPathForSelectedRow()このメソッドを使うことで現在 選択されているインデックスパスが取得できます。ただしこいつは選択されていなかった場合にはnil になりますのでその nil のチェックを含めてこれを if 文でこのように 囲んでやることによってnil のチェックと同時にこのインデックスパスの取得を行うことができます。 そして このようにして取得したインデックスパスを使ってlet currentPhoto =photos indexPath.rowこのように書いて 現在の選択されている写真を 取得します。何か今 エラーが出ていますね。ここではちょっと エラーが出ないと思うのでおそらく Product メニュー からBuild これを押し直すとエラーが消えてくれると 思うんですがはい 消えました。この Command + B を使ってこの Build を呼び出すと時々このようにエラーが消えてくれますのでこちらも覚えておくと 便利だと思います。はい そして このようにして取得したcurrentPhoto を次の secondScene のつまりディスプレイビューコントローラのcurrentPhoto に代入してやることによってこれで データの受け渡しが完了します。はい それでは次の DisplayViewController.swift の方ではこの viewDidLoad でビューが読み込まれた直後の段階にこの 今渡されたcurrentPhoto を使って画像を表示するようにしたいと思います。まずは 画像をですねUIImage を使ってnamed: currentPhoto?.filenameこのように書いてやることで画像を 取得することができます。 これは currentPhoto というのがオプショナル変数なのでcurrentPhoto! にしろということですね。はい このように書きます。これで画像が作成できますのでアウトレットのイメージビューに対してimageView.image = imageこうやって書いてやることによって画像を表示することができます。また同時に 現在のこのビューコントローラに対してタイトルを指定してやりましょう。タイトルとして このcurrentPhoto に設定されている name を設定してやると こういうのを書くとナビゲーションバーの先頭のタイトルも変更されます。それでは実行して動作を確認しておきましょう。はい Blue Skyこれを選択するとBlue Sky が表示されるようになりました。今ちょっと この状態で少しこのメモのところとかですね画面のレイアウトがおかしくなっているので今オートレイアウトを ちょっと指定していない状態なのでついでにここで レイアウトも編集してしまいたいと 思います。UIImageView のオートレイアウトを右下のこのピンのボタンからConstrain to marginsこれを消してですね左と 上と 右と 下 4箇所に制約を追加します。 それから この ツールバーに対してもこのピンボタンからConstrain to marginsを消して左と 右と 下にくっつくようにした上で高さはこのまま height はこのまま保つということでこの4箇所に制約を追加します。はい そして アプリケーションを実行し直すとこれで ちゃんとアプリケーションが動作するように なります。Blue Skyそしてメモが一番下のところですね表示されるようになっているのが分かると思います。チェス ちょっとこれ 画面が 今画像が縦に伸びてしまっていますのでこれを解消するためにこの UIImageView の設定をインスペクタからMode を Scale To FillからAspect Fill に変えておきましょう。こうすることによって横方向に引き伸ばされる といったことがなくこのように ちゃんと全体が 表示された上で全体のアスペクト比も 問題なく表示されるようになります。このレッスンではフォトビューワの最初のシーンと次のシーンの間でデータを受け渡すためのコードを書く方法を説明しました。

SwiftによるiOSアプリ開発基本講座

このコースではiPhoneやiPadのアプリを作ってみたい方に向けて、簡単なiOSアプリを作りながらSwiftを使ったXcodeでの開発手順をひとつずつ丁寧に解説していきます。各レッスンではiOSのフレームワークの機能を確認しながら、アウトレットやアクション、MVCモデルやDelegateといったアプリ開発に必要な知識を説明します。

5時間10分 (53 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2015年10月15日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。