Commit 68308add by Daniel Dahan

pr-938: Fixing lifecycle function calls for base TransitionController

parent ea78e694
Pod::Spec.new do |s|
s.name = 'Material'
s.version = '2.12.6'
s.version = '2.12.7'
s.license = 'BSD-3-Clause'
s.summary = 'A UI/UX framework for creating beautiful applications.'
s.homepage = 'http://materialswift.com'
......
......@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.12.6</string>
<string>2.12.7</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
......
......@@ -173,7 +173,6 @@ open class TabBar: Bar {
willSet {
selectedTabItem?.isSelected = false
}
didSet {
selectedTabItem?.isSelected = true
}
......
......@@ -117,7 +117,7 @@ open class TabsController: TransitionController {
didSet {
selectedIndex = 0
prepareRootViewController()
prepareSelectedIndexViewController()
prepareTabBar()
layoutSubviews()
}
......@@ -175,7 +175,7 @@ open class TabsController: TransitionController {
view.backgroundColor = .white
view.contentScaleFactor = Screen.scale
prepareViewControllers()
prepareSelectedIndexViewController()
prepareTabBar()
prepareTabItems()
}
......@@ -216,6 +216,8 @@ fileprivate extension TabsController {
default:break
}
prepare(viewController: tvc, in: container)
if isTriggeredByUserInteraction {
delegate?.tabsController?(tabsController: self, willSelect: viewController)
}
......@@ -234,8 +236,6 @@ fileprivate extension TabsController {
s.rootViewController = tvc
s.view.isUserInteractionEnabled = true
s.removeViewController(viewController: fvc)
completion?(isFinished)
if isTriggeredByUserInteraction {
......@@ -245,33 +245,10 @@ fileprivate extension TabsController {
}
}
internal extension TabsController {
override func prepareRootViewController() {
rootViewController = viewControllers[selectedIndex]
}
}
fileprivate extension TabsController {
/// Prepares all the view controllers.
func prepareViewControllers() {
prepareViewController(at: selectedIndex)
prepareRootViewController()
}
/**
Loads a view controller based on its index in the viewControllers Array
and adds it as a child view controller.
- Parameter at index: An Int for the viewControllers index.
*/
func prepareViewController(at index: Int) {
let v = viewControllers[index]
guard !childViewControllers.contains(v) else {
return
}
prepare(viewController: v, in: container)
/// Prepares the view controller at the selectedIndex.
func prepareSelectedIndexViewController() {
rootViewController = viewControllers[selectedIndex]
}
/// Prepares the TabBar.
......@@ -338,18 +315,6 @@ fileprivate extension TabsController {
}
}
fileprivate extension TabsController {
/**
Removes a given view controller from the childViewControllers array.
- Parameter at index: An Int for the view controller position.
*/
func removeViewController(viewController: UIViewController) {
viewController.willMove(toParentViewController: nil)
viewController.view.removeFromSuperview()
viewController.removeFromParentViewController()
}
}
extension TabsController {
/**
Transitions to the view controller that is at the given index.
......
......@@ -56,7 +56,16 @@ open class TransitionController: UIViewController {
is recommended to use the transitionFromRootViewController
helper method.
*/
open internal(set) var rootViewController: UIViewController!
open internal(set) var rootViewController: UIViewController! {
willSet {
if let v = rootViewController {
removeViewController(viewController: v)
}
}
didSet {
prepare(viewController: rootViewController, in: container)
}
}
/// The transition type used during a transition.
open var motionTransitionType = MotionTransitionType.fade
......@@ -87,6 +96,10 @@ open class TransitionController: UIViewController {
self.rootViewController = rootViewController
}
open override var shouldAutomaticallyForwardAppearanceMethods: Bool {
return false
}
open override func viewDidLoad() {
super.viewDidLoad()
prepare()
......@@ -148,7 +161,6 @@ open class TransitionController: UIViewController {
view.contentScaleFactor = Screen.scale
prepareContainer()
prepareRootViewController()
}
}
......@@ -162,12 +174,6 @@ internal extension TransitionController {
view.addSubview(container)
}
/// A method that prepares the rootViewController.
@objc
func prepareRootViewController() {
prepare(viewController: rootViewController, in: container)
}
/**
A method that adds the passed in controller as a child of
the BarController within the passed in
......@@ -181,6 +187,10 @@ internal extension TransitionController {
return
}
guard !childViewControllers.contains(v) else {
return
}
addChildViewController(v)
container.addSubview(v.view)
v.didMove(toParentViewController: self)
......@@ -190,3 +200,15 @@ internal extension TransitionController {
v.view.contentScaleFactor = Screen.scale
}
}
internal extension TransitionController {
/**
Removes a given view controller from the childViewControllers array.
- Parameter at index: An Int for the view controller position.
*/
func removeViewController(viewController: UIViewController) {
viewController.willMove(toParentViewController: nil)
viewController.view.removeFromSuperview()
viewController.removeFromParentViewController()
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment