ViewController类未正确切换

时间:2014-09-30 23:40:05

标签: objective-c xcode model-view-controller uiviewcontroller interface-builder

我有2个视图控制器,我只是想在它们之间切换。

在第一个切换事件中我这样做(即viewController1正在加载viewController2来显示):

// viewController1对象

if(!_viewController2)
{
    _viewController2 = [[ViewControllerSubClass alloc] initViewWithReferenceToCurrentView:self];
}
[self presentViewController:_viewController2 animated:NO completion:nil]

// FYI ViewControllerSubClass中的init方法看起来像这样

-(id)initViewWithReferenceToCurrentView:(TakePhotoViewController*)view
{
    self = [self init];
    _previousViewController = view;
    return self;
}

这样可行,视图会加载此类。但是,当我尝试切换回viewController2类中的viewController1时,它不起作用,并且viewController2占用了屏幕。

// viewController2对象

-(void)goBackToViewControllerOne
{
    [self presentViewController:_takePhotoView animated:NO completion:nil];
    [self removeFromParentViewController];
}

我可以100%验证代码是否被调用,但视图没有切换。

知道我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

首先,你不需要创建一个特殊的初始化程序,你将当前视图控制器的指针传递给 - 当你以模态方式呈现一个视图控制器时,它有一个属性,presentViewController,它将指向到呈现它的控制器。

其次,当你想回到第一个控制器时,你应该使用dismissViewControllerAnimated:completion:,而不是第一个控制器。