У меня есть 2 контроллера верхнего уровня, каждый со своим собственным контроллером навигации. У меня также есть MenuViewController, который добавляется к каждому из контроллеров отображения верхнего уровня, на viewDidLoad, как это:Переключение между видами в разных навигационных контроллерах
var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc : MenuViewController = storyboard.instantiateViewControllerWithIdentifier("MenuViewController") as MenuViewController
addChildViewController(vc)
menuView.addSubview(vc.view)
vc.didMoveToParentViewController(self)
В MenuViewController, вы можете переключаться между двумя контроллерами зрения верхнего уровня. В настоящее время я использую этот код для переключения между ними:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if indexPath.row == 0 {
let vc : HomeViewController = storyboard.instantiateViewControllerWithIdentifier("HomeViewController") as HomeViewController
let navigationController = UINavigationController(rootViewController: vc)
self.presentViewController(navigationController, animated: true, completion: nil)
} else if indexPath.row == 1 {
let vc : FoodCraftsViewController = storyboard.instantiateViewControllerWithIdentifier("FoodCraftsViewController") as FoodCraftsViewController
let navigationController = UINavigationController(rootViewController: vc)
self.presentViewController(navigationController, animated: true, completion: nil)
}
}
Мое беспокойство в том, что каждый раз, когда я переключаюсь между окнами с помощью меню, это выделение дополнительной памяти и не вынимая предыдущий вид из памяти. Каков эффективный способ гарантировать, что я не воссоздаю контроллеры представлений/трату памяти каждый раз, когда я переключаю представления верхнего уровня с помощью меню?
Спасибо!
Это легко? Я не думал, что это сработает, потому что каждый раз, когда загружается контроллер верхнего уровня, он создает новый экземпляр MenuViewController. – codeman
Сколько раз загружается ваш контроллер верхнего уровня? Возможно, я неправильно понял вашу архитектуру. Вы создаете 'MenuViewController' внутри каждого из ваших' HomeViewController' и 'FoodCraftsViewController'? –
Да, я создаю экземпляр MenuViewController внутри обоих диспетчеров верхнего уровня, но оба диспетчера представлений не будут загружаться одновременно. Я делаю это из-за анимации, которую я делаю в этих диспетчерах представлений, где строка состояния скрывается, в то же время основной вид анимируется частично с экрана, показывая под ним MenuViewController. Будет ли ваш метод по-прежнему работать с предотвращением ненужного выделения/создания экземпляра? – codeman