Swiftで遊ぼう! - 698 - Multithreading and Text Field
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
今日から講義8に入ります。しかし最初はScrollViewの続きです。
Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U
2年前にクリアしている所なので今のところ復習です。新しい内容も含みますが、2年前の講義とほぼ同じなのでこのまま続けていきます。
ここでSplit View Controllerを組み込んでいくための下準備をしていきます。オブジェクト・ライブラリから新しいViewControllerをドラッグ&ドロップします。新しいViewControllerコードも用意します。「CassiniViewController」と名前を付けて、新しく設置したジェネリックなViewControllerのアイデンティティ・インスペクタから「CassiniViewController」を選びます。
再びオブジェクト・ライブラリからSplit View Controllerをドラッグ&ドロップします。デフォルトのMasterとDetailを消去して、Split View Controllerから「Ctrl + ドラッグ」して、CassiniViewControllerを「master view controller」にして、ImageViewControllerを「detail view controller」にします。
次はCassiniViewControllerに3つUIButtonを設置して、名前をそれぞれ「Earth「Cassini」「Saturn」にして、Stck Buttonでまとめてコンストレイントで整えます。細かな説明はしなくてもいいでしょう。Stack Buttonの使い方は既にここで説明しています。
Navigation Controllerも「Embed in」します。iPhoneとiPadで動くようにするためです。こういう説明を聞いて理解できなければ、まだまだ基礎知識が足らないんで復習をしましょう。
次は3つのボタンからImageViewControllerに「Ctrl + ドラッグ」してSegueを作ります。
今回のポイントは1つのSegueを使い回す実装法です。こういう実装法も知っていないと絶対できないでしょう。しかし本当にこういうコーディングができるようになるんだろうか?
3つのセグエのidentifierに同じ名前をつけます。「Show Image」にします。
CassiniViewControllerをコーディングします。
import UIKit class CassiniViewController: UIViewController { private struct Storyboard { static let ShowImageSegue = "Show Image" } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == Storyboard.ShowImageSegue { if let ivc = segue.destinationViewController as? ImageViewController { let imageName = (sender as? UIButton)?.currentTitle ivc.imageURL = DemoURL.NASAImageNamed(imageName) ivc.title = imageName } } } }
struct型のStroyboad定数も、ポール先生ならではのコーディングスタイルです。ハードコーディングを避けるってのはプログラミングの基本中の基本ですね。こういうスタイルが自然にできるようになりたいものです。
まだまだ自然にコーディングできませんが、かなり自然に理解できるようになりました。
これでボタンの実装ができました。次はマルチスレッドや、Scroll Viewのデリゲーションメソッドによるズーミングの話が来ます。プロトコールとデリゲーションは復習しておきましょう。
今日はここまで。