NSManagedObjectContext和SplitViewController

时间:2015-12-08 20:07:33

标签: ios swift core-data uisplitviewcontroller nsmanagedobjectcontext

This is my storyboard

我正在尝试使用SplitViewController将我的NSManagedObjectContext传递到我的主视图控制器。 使用iPhone时没有分割视图,一切正常。我的主视图控制器(ViewController)上的类别tableview显示我的数据。但是,当我使用iPad时,桌面视图是空的。

在iPhone上,当我在顶部tableview中选择一行时,它会在下方tableview中显示相关对象。选择下方桌面视图上的一个对象会对我的详细视图控制器的导航控制器执行segue,但我甚至无法在iPad上到达,因为顶部的桌面视图没有填充。

在我的AppDelegate中,我有以下内容。 有没有想法为什么它会在没有分割视图的情况下在iPhone上显示内容,但在分割时不在iPad上显示?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        let splitViewController = self.window!.rootViewController as! UISplitViewController
        splitViewController.delegate = self
        if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
            splitViewController.preferredDisplayMode = .AllVisible
            splitViewController.preferredPrimaryColumnWidthFraction = 0.5
            splitViewController.maximumPrimaryColumnWidth = 400
        }
        let nav = splitViewController.viewControllers[0] as! UINavigationController
        let vc = nav.topViewController as! ViewController
        let context = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType)
        context.persistentStoreCoordinator = CDHelper.sharedInstance.coordinator
        vc.context = context
        return true
    }

我也有这个

func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController, ontoPrimaryViewController primaryViewController:UIViewController) -> Bool {
        guard let secondaryAsNavController = secondaryViewController as? UINavigationController else { return false }
        guard let topAsDetailController = secondaryAsNavController.topViewController as? ColorPickerViewController else { return false }
        if topAsDetailController.paletteColor == nil {
            // Return true to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
            return true
        }
        return false
    }

0 个答案:

没有答案