我有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%验证代码是否被调用,但视图没有切换。
知道我错过了什么?谢谢!
答案 0 :(得分:2)
首先,你不需要创建一个特殊的初始化程序,你将当前视图控制器的指针传递给 - 当你以模态方式呈现一个视图控制器时,它有一个属性,presentViewController,它将指向到呈现它的控制器。
其次,当你想回到第一个控制器时,你应该使用dismissViewControllerAnimated:completion:,而不是第一个控制器。