Swiftで遊ぼう! - 702 - Multithreading and Text Field 6
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
セグエをターゲット・アクションに切り替えてみる。
Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U
ボタンを押してセグエを作る度にDetailViewControllerが作られるため、メモリーの無駄になるためiPadのようにSplitViewControllerを使ってMasterとDetailが同時に表示されている環境の場合、DetailViewControllerは1つだけ作って使い回すのが良いようです。
どうするのか?「Ctrl + ドラッグ」で作ったstoryboard上の3つのセグエを消去します。ボタンをCassiniViewControllerのコードに「Ctrl + ドラッグ」してターゲット・アクションとして「@IBAction」メソッドを作ります。名前は「showImage」にします。senderは当然「UIButton」です。
@IBAction func showImage(sender: UIButton) { if let ivc = splitViewController?.viewControllers.last?.contentViewController as? ImageViewController { let imageName = sender.currentTitle ivc.imageURL = DemoURL.NASAImageNamed(imageName) ivc.title = imageName } }
SplitViewControllerで可能な方法ですが、iPadのように2つのViewControllerを同時に表示できる場合だけです。じゃあiPhoneのような切りかえが必要なデバイスの場合はセグエが必要です。しかしボタンからセグエを作るのではなく、ViewControllerからViewControllerにセグエを繋ぎます。
そして「Show」で繋いでからターゲット・アクションのメソッドを変更します。
@IBAction func showImage(sender: UIButton) { if let ivc = splitViewController?.viewControllers.last?.contentViewController as? ImageViewController { let imageName = sender.currentTitle ivc.imageURL = DemoURL.NASAImageNamed(imageName) ivc.title = imageName } else { performSegueWithIdentifier(Storyboard.ShowImageSegue, sender: sender) } }
これでiPhoneならセグエができるようになりました。
この後にUITextFieldの説明がありますが、デモは無かったのでこれでLecture8が終了です。明日からUITableViewの講義です。実は2年前に中断したパートです。今回はちゃんとやりきれるだろうか?
しかし、新しいアプリのアイディアが生まれたので少し考えるつもりです。
今日はここまで。