ios - viewDidLoad 是否在 UITabBarController 中被多次调用?

标签 ios objective-c uitabbarcontroller viewdidload

我在我的应用程序中使用 SWRevealViewController(以获取滑出侧面板)但是每当用户导航到另一个 viewController(如“设置”)并返回时,一切都会重置。我知道这是 Storyboard的正常行为,因为实例化了一个新的 VC 并且每次都会调用 viewDidLoad。我试图通过将 VC 存储在 AppDelegate 的数组中然后返回到原始 viewController 来解决这个问题,这阻止了在最初重新呈现原始 VC 时调用 viewDidLoad 但我仍然发现它在两者之间移动时随机调用veiwcontroller 的,重置我的所有属性等。在研究中,Apple 文档确实说不要假设 viewDidLoad 只会被调用一次。

在切换选项卡时,这种行为在 UITabBarController 中是否很明显,因为我正在考虑放弃 SWRevealViewController 并使用它来代替它,如果它不会那么令人头疼的话。

我应该以不同的方式处理这个问题吗?将“状态”存储在 NSUserDefaults 中并在 viewDidLoad 上恢复?

提前致谢。

最佳答案

viewDidLoad 仅在 UIViewController 首次加载到内存中时被调用一次。这是您想要实例化任何实例变量并构建在此 UIViewController 的整个生命周期内存在的任何 UIViews 的地方。

UITabBarController 中,当您切换选项卡时,UIViewControllerviewdidLoad 也会被调用一次。

关于ios - viewDidLoad 是否在 UITabBarController 中被多次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292205/

相关文章:

objective-c - 如何在启动时在 Cocoa 应用程序中打开一个新窗口

swift - 如何将 ViewController 添加到 UITabBarController 并以编程方式加载它?

iphone - 将多个按钮连接到一个 Action ?

ios - 为什么我的标签栏 Controller 从与事件 View Controller 不同的 View Controller 执行代码?

ios - UITabBarController - 更多按钮不显示

iphone - 如何验证允许 .仅在文本字段中出现一次

ios - 关闭模态视图时无法形成对 UIScrollView 子类 (EXC_BAD_INSTRUCTION) 的弱引用

ios - [NSTimer invalidate] 上的参数无效错误

ios - UIWebView 嵌入式 YouTube 视频播放的状态栏问题

ios - 将 xcode 项目 4.2 迁移到 xcode 7.0