建议 - 底部导航处理
advice - Bottom navigation handling
我是 iOS 的新手,我有标签栏。我有 4 个选项卡,例如 Facebook。
在我的例子中,当用户进入该屏幕之一时,所有数据都应随时从服务器更新。
有人说频繁调用 viewDidLoad
会导致内存泄漏。是真的吗?
那么最好玩的是什么?每次调用 viewDidLoad()
并从服务器加载数据或者有另一种方法来处理这个问题,而不是每次都调用 viewDidLoad()
。
该屏幕没有下拉刷新
viewDidLoad()
只会在第一次加载视图控制器时调用。使用选项卡栏控制器通常会在用户切换选项卡时将视图控制器保留在内存中,因此如果您希望每次用户进入新屏幕时都进行加载,这不是最好的地方。
我建议使用 viewWillAppear
或 viewDidAppear
。如果您从网络更新数据,请确保在后台线程上进行加载,以确保接口不会被阻塞(无论您使用哪种方法)。
就我个人而言,我会将网络加载代码放在 viewDidAppear
中,因为我认为在视图完成显示后调用网络更有意义,因为它可能不会立即完成。这样也更容易呈现一个 UI 元素,显示数据正在加载给用户。
我是 iOS 的新手,我有标签栏。我有 4 个选项卡,例如 Facebook。
在我的例子中,当用户进入该屏幕之一时,所有数据都应随时从服务器更新。
有人说频繁调用 viewDidLoad
会导致内存泄漏。是真的吗?
那么最好玩的是什么?每次调用 viewDidLoad()
并从服务器加载数据或者有另一种方法来处理这个问题,而不是每次都调用 viewDidLoad()
。
该屏幕没有下拉刷新
viewDidLoad()
只会在第一次加载视图控制器时调用。使用选项卡栏控制器通常会在用户切换选项卡时将视图控制器保留在内存中,因此如果您希望每次用户进入新屏幕时都进行加载,这不是最好的地方。
我建议使用 viewWillAppear
或 viewDidAppear
。如果您从网络更新数据,请确保在后台线程上进行加载,以确保接口不会被阻塞(无论您使用哪种方法)。
就我个人而言,我会将网络加载代码放在 viewDidAppear
中,因为我认为在视图完成显示后调用网络更有意义,因为它可能不会立即完成。这样也更容易呈现一个 UI 元素,显示数据正在加载给用户。