分段控制,无需重新加载

时间:2015-09-06 17:19:48

标签: ios swift uisegmentedcontrol uiviewanimation

我正在使用分段控件在两个不同的视图之间切换。 但是,使用我的代码,每次显示时都会重新加载视图。

这是我的代码:

        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中做类似今天/通知的事情。

1 个答案:

答案 0 :(得分:2)

您想知道切换时为什么会重新加载视图控制器。原因是你正在调用instantiateViewController...,它实例化一个新的视图控制器。

相反,在此容器控制器中有一个容器视图控制器,其中包含两个容器视图和保留两个控制器的引用(作为变量)。