我正在使用分段控件在两个不同的视图之间切换。 但是,使用我的代码,每次显示时都会重新加载视图。
这是我的代码:
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来隐藏我不需要的那个,但是这样我在视图之间的段落中就没有动画了。
为了更好地理解,我想在每个Iphone中做类似今天/通知的事情。
答案 0 :(得分:2)
您想知道切换时为什么会重新加载视图控制器。原因是你正在调用instantiateViewController...
,它实例化一个新的视图控制器。
相反,在此容器控制器中有一个容器视图控制器,其中包含两个容器视图和保留两个控制器的引用(作为变量)。