0

Когда мое приложение запускается впервые на симуляторе iPad, таблица mainVC загружает и отображает данные из моей модели, но диспетчер подробных представлений не работает. Он загружает и отображает данные из раскадровки. Я бы хотел, чтобы он отображал первый элемент из главного меню (например).Как загрузить подробный контроллер просмотра (с раздельного просмотра) при запуске в режиме быстрого?

Я видел это в учебнике RayW из метода AppDelegate, didFinishLaunchingWithOptions, но они не использовали стандартный код разбитого вида, а скорее воссоздали его с нуля с некоторым изменением от кода по умолчанию. Это, как они это сделали:

let splitViewController = self.window!.rootViewController as! UISplitViewController 
let leftNavController = splitViewController.viewControllers.first as! UINavigationController 
let masterViewController = leftNavController.topViewController as! MasterViewController 
let detailViewController = splitViewController.viewControllers.last as! DetailViewController 
let firstMonster = masterViewController.monsters.first 
detailViewController.monster = firstMonster 
return true 

Ниже по умолчанию код плюс (после пустой строки) попытка согласовать код по умолчанию с указанным выше способом.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    let splitViewController = self.window!.rootViewController as! UISplitViewController 
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController 
    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem() 
    splitViewController.delegate = self 

    let leftNavController = splitViewController.viewControllers.first as! UINavigationController 
    let masterViewController = leftNavController.topViewController as! MasterViewController 
    let detailViewController = navigationController.topViewController as! DetailViewController 
    let firstRecord = masterViewController.records.first 
    detailViewController.record = firstRecord 

    return true 
} 

В моих первоначальных попытках я бросал вокруг неправильных контроллеров, но приведенный выше код по крайней мере, компилируется и работает, но он не загружает первую запись в detailVC.

Это правильный подход, и я просто что-то пропустил, или есть другой способ сделать это?

ответ

1

Чем проще способ сделать это, когда detailedVC является инстанциирован в методе viewDidLoad в MasterViewController в:

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    startingDetailedVCData = theData 

    if let split = self.splitViewController { 
     let controllers = split.viewControllers 
     self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController 

     self.detailViewController?.detailedData = startingDetailedVCData 
    } 
} 
Смежные вопросы