我试图找出不同的 UIViewController 方法(如 viewDidLoad、viewDidAppear、viewWillAppear 等)中应包含哪些逻辑
我的应用程序的结构是,我有一个 Root View Controller ,它实际上没有自己的 View ,而是有一个选项卡 View Controller 并将其他 View Controller 加载到其中。但将来,它可能需要加载其他 View Controller 而不是选项卡栏 Controller ,具体取决于应用程序逻辑。
我的主要问题是,人们通常会在 viewDidLoad, .... 方法中放入什么。
目前我:
viewDidLoad - 设置标签栏 Controller 并将其 View 设置为 View Controller 自己的 View
viewDidAppear - 检查用户是否已存储登录信息 如果没有 - 需要登录 如果是这样,请登录并获取第一个选项卡的应用程序数据
我现在试图弄清楚设置标签栏 Controller 的逻辑是否应该进入 loadView 而不是 viewDidLoad。
任何帮助都会很棒。网络上找到的小示例很棒,但它们没有详细说明大型应用程序应如何构建。
最佳答案
您不应同时实现 -viewDidLoad
和 -loadView
;它们有不同的目的。如果加载 NIB,则应该实现 -viewDidLoad
来执行加载 NIB 后需要完成的任何功能。如果您还没有在 NIB 中完成此操作,则在那里连接选项卡栏是合适的。
-loadView
,并且应构造 View 。
-viewWillAppear
在您出现在屏幕上之前立即调用。这是一个很好的地方,可以设置通知观察,根据自您上次在屏幕上以来发生更改的模型类更新数据,或者在用户看到您之前采取行动。您不应在此处执行任何动画。你不在屏幕上;你不能制作动画。由于这个错误,我看到很多动画故障。它有点有效,但看起来很奇怪。
-viewDidAppear
在您进入屏幕后被调用。这是您执行任何进入动画的地方(例如,向上滑动模式;并不是说您应该经常这样做,但我只是在查看一些这样做的代码)。
-viewWillDisappear
在您离开屏幕之前被调用。您可以在此处执行任何离开动画(包括取消选择表格 View 单元格等)。
-viewDidDisappar
在您离开屏幕后(并且动画完成)被调用。撕掉这里的所有观察结果,如果可能的话释放内存,尽你所能去 sleep 。
我在这里谈到了观察的建立和拆除。我在 View controllers and notifications 中更深入地讨论了这一点。 .
关于iPhone - 使用哪些 View Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338685/