【问题标题】:ViewController Classes Not Switching ProperlyViewController 类没有正确切换
【发布时间】:2014-09-30 23:40:05
【问题描述】:

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

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

//viewController1 对象

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

;

//仅供参考,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% 验证代码被调用但视图没有切换。

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

【问题讨论】:

  • 你使用 UINavigationController 吗?
  • 我正在使用您在创建单个应用程序视图时获得的 ViewController。它只是一个 ViewController
  • 你这样做的方式有点臭。尝试更改 UIWindow 的根视图控制器。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多