Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 699 - Multithreading and Text Field 3

講義8の内容も目新しいことは無いのですが、いざ自分でコーディングしようとすると固まってしまいます。iPadで動かす時にDetailViewControllerの上部にタイトルを表示させるために再びNavigationControllerを組み込みます。

Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U

NavigationViewControllerを組み込む時に注意しなければならないのが、セグエ先が変化してしまう所です。少し前に同様のコーディングをしました。覚えていますか? 同じ事を自分でコーディングしようとすると見事に忘れてしまっていてできませんでした(T_T) コードを見れば直ぐに思い出すのに、なかなか記憶に定着してくれません。繰り返すしかないけど、覚える事が多すぎて繰り返すタイミングをなかなか短縮できません。

CassiniViewControllerクラスコーディング外の1番下に次のコードを加えます。

extension UIViewController {
    var contentViewController: UIViewController {
        if let navcon = self as? UINavigationController {
            return navcon.visibleViewController ?? self
        } else {
            return self
        }
    }
}

セグエのコードも変わります。

override func prepareForSegue(segue: UIStoryboardSegue, 
                              sender: AnyObject?) {
    if segue.identifier == Storyboard.ShowImageSegue {
        if let ivc = 
             segue.destinationViewController.contentViewController as? 
                  ImageViewController {
            let imageName = (sender as? UIButton)?.currentTitle
            ivc.imageURL = DemoURL.NASAImageNamed(imageName)
            ivc.title = imageName
        }
    }
}

これでiPadで開いて、DetailViewControllerの上部にタイトルの表示もできました。

f:id:yataiblue:20160606184452j:plain

次にマルチスレッドを実装するのですが、fetchImage()メソッドの呼ぶタイミング調整の説明がありました。2年前の記事に加筆したのでそちらを参考にして変更します。

yataiblue.hatenablog.com

今日はここまで。