切换到另一个ViewController中的新ViewController?

时间:2011-03-24 21:17:03

标签: iphone objective-c ios uiviewcontroller

我知道您可以使用中间类从一个ViewController切换到另一个ViewController,如this example中所示。

我想知道的是,有没有办法直接从另一个视图控制器切换到另一个视图控制器?比如,在当前视图控制器中加载视图,然后立即释放你所在的那个?

感谢。

3 个答案:

答案 0 :(得分:0)

我认为你要求的是如何保留1个视图控制器。

您可以执行的操作是添加新的View Controller,将其添加到父视图控制器并删除当前的视图控制器。

答案 1 :(得分:0)

使用UINavigationController是一种方式:[navigationController pushViewController:animated:]。另一种“官方”方式是将下一个视图显示为模态视图:[someVC presentModalViewController:],但自iOS 6开始不推荐使用。

iOS 6的方式是: - (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

答案 2 :(得分:0)

var currentVC:UIViewController!
let firstVC = yourViewcontroller1()
let secondVC = yourViewcontroller2()
func setupChildViewControllers(){
    self.addChildViewController(firstVC)
    self.addChildViewController(secondVC)
    self.view.addSubview(firstVC.view)
    self.currentVC = firstVC
}

func replaceController(oldVC:UIViewController,newVC:UIViewController){
    self.addChildViewController(newVC)

    self.transitionFromViewController(oldVC, toViewController: newVC, duration: 0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: nil) { (finished) -> Void in
        if finished {
            newVC.didMoveToParentViewController(self)
            oldVC.willMoveToParentViewController(nil)
            oldVC.removeFromParentViewController()
            self.currentVC = newVC
        }else{
            self.currentVC = oldVC
        }
    }
}