Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 639 - Zoomania 8

NavigationControllerを埋め込んだだけなのにAppDelegateでエラーが生じました。

この理由は単純です。最初にAppDelegateが設定しているrootViewControllerはViewControllerでした。しかし、NavigationControllerが埋め込まれた時点で、UINavigtionControllerに変更されたんです。

ちゃんと動かすためにリファレンス設定を変更するんです。

let rootViewController = 
           self.window!.rootViewController as! ViewController
        rootViewController.context = self.managedObjectContext

AppDelegateのこのコードを次のように変更します。

if let nc = self.window!.rootViewController as? 
                               UINavigationController {
   let vc = nc.visibleViewController as! ViewController
   vc.context = self.managedObjectContext
}

windowに直結するrootViewControllerがNavigationControllerなんで、NavigationControllerが表示しているViewControllerをrootViewControllerに設置するのに「vidibleViewController」プロパティを使います。「visibleViewController」を使った理由はここにあります

これでランすると

f:id:yataiblue:20160407165750j:plain

再びちゃんと表示されるようになりました。実は結構悩んで試行錯誤を繰り返しています(^^;)

今日はこれだけ。