Я использую сегментированный элемент управления для переключения между двумя разными видами. Однако, с моим кодом, просмотры обновляются каждый раз, когда они отображаются.Сегментированный контроль без перезагрузки
Вот мой код:
let newController = storyboard?.instantiateViewControllerWithIdentifier(viewControllerIdentifiers[sender.selectedSegmentIndex]) as! userProfileViewController
let oldController = childViewControllers.last as! UIViewController
newController.userToShow = self.userToShow
oldController.willMoveToParentViewController(nil)
addChildViewController(newController)
newController.view.frame = oldController.view.frame
transitionFromViewController(oldController, toViewController: newController, duration: 0.25, options: .TransitionCrossDissolve, animations:{() -> Void in
// nothing needed here
}, completion: { (finished) -> Void in
oldController.removeFromParentViewController()
newController.didMoveToParentViewController(self)
})
} else if sender.selectedSegmentIndex == 1 {
let newController = storyboard?.instantiateViewControllerWithIdentifier(viewControllerIdentifiers[sender.selectedSegmentIndex]) as! secondProfilePageViewController
let oldController = childViewControllers.last as! UIViewController
newController.userToShow = self.userToShow
oldController.willMoveToParentViewController(nil)
addChildViewController(newController)
newController.view.frame = oldController.view.frame
transitionFromViewController(oldController, toViewController: newController, duration: 0.25, options: .TransitionCrossDissolve, animations:{() -> Void in
// nothing needed here
}, completion: { (finished) -> Void in
oldController.removeFromParentViewController()
newController.didMoveToParentViewController(self)
})
}
}
Я также пытался сделать это с помощью двух UIContainerViews, и скрывая тот, что я не нужна, но таким образом я не мог иметь любую анимацию в прохождение между видами.
Чтобы лучше понять, я хотел бы сделать что-то вроде материалов Today/Notifications в каждом Iphone.
Но как я могу анимировать проход, а не скрывать мнение, которое мне не нужно? – dpstart
Я думал, что проблема в том, что вы всегда получаете новое представление, а не то, что он не оживляет. – Mundi
@dpstart, вы уже используете контроллер вида контейнера, как он упомянул, это VC, который запускает ваш код анимации. Вам просто нужно хранить ссылки на два VC, которые вы хотите поменять на этом VC. Я бы создал два VC в вашем viewDidLoad и просто отслеживал, какой из них видим. Строка вашего экземпляра буквально создает новый VC, поэтому вам нужно использовать его только один раз за VC, который вы хотите обменять. –