iPhone - 使用哪些 View Controller 方法

标签 iphone cocoa-touch design-patterns uiviewcontroller

我试图找出不同的 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 中完成此操作,则在那里连接选项卡栏是合适的。

如果您不使用 NIB,则应实现

-loadView,并且应构造 View 。

-viewWillAppear 在您出现在屏幕上之前立即调用。这是一个很好的地方,可以设置通知观察,根据自您上次在屏幕上以来发生更改的模型类更新数据,或者在用户看到您之前采取行动。您不应在此处执行任何动画。你不在屏幕上;你不能制作动画。由于这个错误,我看到很多动画故障。它有点有效,但看起来很奇怪。

-viewDidAppear 在您进入屏幕后被调用。这是您执行任何进入动画的地方(例如,向上滑动模式;并不是说您应该经常这样做,但我只是在查看一些这样做的代码)。

-viewWillDisappear 在您离开屏幕之前被调用。您可以在此处执行任何离开动画(包括取消选择表格 View 单元格等)。

-viewDidDisappar 在您离开屏幕后(并且动画完成)被调用。撕掉这里的所有观察结果,如果可能的话释放内存,尽你所能去 sleep 。

我在这里谈到了观察的建立和拆除。我在 View controllers and notifications 中更深入地讨论了这一点。 .

关于iPhone - 使用哪些 View Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338685/

相关文章:

苹果手机 : uitableview : contents of a cell change on scrolling

iphone - 使用 NSNumberFormatter 将 NSNumber 转换为 NSString

ios - UITableViewCell.imageView 给出内存警告?

objective-c - UIImagePickerController Camera Device Front 每隔一段时间才工作

javascript - 将实例属性放在原型(prototype)构造函数中,好还是坏?

iphone - SKPaymentQueue : restoring transactions finishes without calling 'updatedTransactions' in release config but not debug config

iPhone UIWebView问题

c# - DDD 和基于重型基础设施的 'domains' - DDD 在这里失败了吗?

ios - Storyboard中的 Appdelegate 变量

Lua 和松散的模式