2015-10-24 3 views
0

Мне сложно выбрать контроллер вида, отображающий подробный вид в контроллере с разделенным изображением. Похоже, что есть некоторый вызов по умолчанию для контроллера вида позади showDetail, но я не могу найти где. Когда контроллер разделенного представления загружается, он показывает DetailViewController как деталь в расколе моих попыток установить его на OverviewViewController. showDetail segue не вызывается при загрузке, однако он по-прежнему является значением по умолчанию.Segue to DetailViewController (SplitViewController)

Когда я переопределил didSelectRowAtIndexPath на главном устройстве, я вижу мерцание, когда он на короткое время устанавливает DetailViewController перед установкой .

Вот мой код:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.navigationItem.leftBarButtonItem = self.editButtonItem() 
    if let split = self.splitViewController { 
     let controllers = split.viewControllers 
     self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? OverviewViewController 

    } 
} 

// MARK: - Segues 
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    print("did select row") 
    NSOperationQueue.mainQueue().addOperationWithBlock { 
     self.performSegueWithIdentifier("showOverview", sender: self) 
    } 

} 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetail" { 
     print("segue to showDetail") 
      let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController 
      controller.injectOrder(gobl_meal_orders[indexPath.row]) 
      controller.detailItem = object 
      controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() 
      controller.navigationItem.leftItemsSupplementBackButton = true 
     } 
    }else if segue.identifier == "showOverview"{ 
     print("show overview called") 
    } 
} 

Где находится эта скрытая предустановка зрения контроллера?

ответ

1

Если я правильно понял, вы не хотите, чтобы отображалось подробное представление при загрузке контроллера splitview.

Способ управления заключается в использовании пользовательского класса для UISplitViewController и реализовать следующий метод делегата

splitViewController(_:collapseSecondaryViewController:ontoPrimaryViewController:)

Вот пример.

import UIKit 

class MyCircleUISplitViewController: UISplitViewController, UISplitViewControllerDelegate { 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    delegate = self 

    // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 

    func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool { 
    return true 
    }  
} 

Здесь также хороший blog на UISplitViewControllers, что вы могли бы найти интересным.

Смежные вопросы