在不调用presentViewController(或dismissViewController)的情况下呈现视图控制器

时间:2013-11-22 12:39:51

标签: objective-c uiviewcontroller ios7 uistoryboard segue

我正在构建一个可在iOS7 +上运行的相当复杂的iPad应用程序。该应用程序有一个登录屏幕,每个用户会话必须访问一次,这是我的故事板中的起始视图控制器。用户可以通过触摸每个其他ViewController中始终可用的按钮,从应用程序中的任何其他屏幕(大约有60个其他屏幕)注销。当用户注销时,应使用自定义过渡动画。

似乎我可以通过两种方式之一实现这一点,从应用程序中的每个屏幕到登录页面都有一个segue,这使得故事板无法读取,或者是presentViewController。

我已经使用presentViewController实现了这一点,通过从故事板中查找视图控制器(创建一个新实例,这是一个理想的行为),然后从当前视图控制器中呈现它。

毫不奇怪,这并没有消除原始的登录视图控制器,并且本质上创建了一堆视图控制器,最终每次用户注销时内存不足,创建并保留新的登录视图控制器。

有没有办法清除视图控制器的“堆栈”?

是否有不同的方式来呈现带有动画的视图控制器,它不涉及presentViewController或segues?我考虑过视图控制器包含,但在与故事板一起使用时似乎不太正确。

2 个答案:

答案 0 :(得分:1)

您是否考虑过更换根视图控制器?如果应用程序委托观察到注销通知,并将故事板的初始内容替换为根视图控制器,该内容应该将应用程序返回到初始屏幕。

我已经看到它作为网络上其他地方的登录/退出问题的解决方案,但我不确定是否有可以在那里制作动画的转换。

答案 1 :(得分:0)

我认为你的做法是错误的。 明智地纠正我

登录机制应该是单例实例。因此,您应该将视图控制器,模型,视图全部定义为单例实例。请查看我的以下代码。

static id objectInstance;

+ (id) sharedInstanceID {
    if (!objectInstance) {
        objectInstance = [[YourClass alloc] init];
    }
    return objectInstance;
}

如果这有助于您,请告诉我。

相关问题