Я хочу отображать свое собственное представление, когда пользователь нажимает кнопку в исходном контроллере представления, поэтому я попытался определить следующую функцию, которая вызывается, когда пользователь нажимает кнопку:
func show() {
vc = UIViewController()
var button = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
button.backgroundColor = UIColor.redColor()
button.addTarget(self, action: "hide", forControlEvents: UIControlEvents.TouchDown)
vc.view.addSubview(button)
self.addChildViewController(vc)
self.view.addSubview(vc.view)
vc.didMoveToParentViewController(self)
}
Однако, когда пользователь нажимает кнопку, представление контейнера резко отображается на экране, но я хочу, чтобы оно отображалось более плавно. Итак, затем я попытался переписать его с анимацией, но я уперся в стену, так как я не знаю, что я должен написать, чтобы отобразить это с анимацией:
transitionFromViewController(self, toViewController: vc, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {() -> Void in
self.addChildViewController(self.vc)
self.view.addSubview(self.vc.view)
}, completion: {
Bool -> Void in
self.vc.didMoveToParentViewController(self)
})
Это возвращает ошибку: 'NSInvalidArgumentException', reason: 'Children view controllers <mmmmlvalsllsl.ViewController: 0x7fc980f71f70> and <UIViewController: 0x7fc980f6dd00> must have a common parent view controller when calling -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]'.
Я думаю, что мне следует использовать этот метод, но я не знаю, какой код писать в блоке animations:, а какой в блоке completion:.
Как я могу написать код анимации?