【发布时间】:2017-09-28 19:24:17
【问题描述】:
我正在使用来自this answer 的 ToastView 类,但我在使用活动指示器时遇到了同样的问题。我在整个应用程序中都有 ToastViews,但如果它可以工作,我会毫不犹豫地切换到指示器
我的应用有一个显示选项的表格视图。选择一个选项后,需要加载很多关于该选项的信息,像这样
class TableController : UITableViewController
{
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
index = (indexPath as NSIndexPath).row
super.performSegue(withIdentifier: "cellSelectedSegue", sender: self)
}
}
class cellSelectionView : UIViewController
{
override func viewDidLoad() {
super.viewDidLoad()
if let data = parser.getData(...){
// data processing
}
}
}
我想让用户知道当他们选择一个单元格时正在执行加载操作。否则,一个单元格被选中,呈现单元格选择的颜色,并且应用程序在 segue 发生之前静止一秒钟。
为此,我已经尝试过
// In the tableview:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Solution 1: ToastView.showInParent(parentView: self.view, text: "ayy lmao", duration: 1.0)
// Solution 2: indicator.startAnimating()
index = (indexPath as NSIndexPath).row
super.performSegue(withIdentifier: "cellSelectedSegue", sender: self)
}
这两种解决方案都不起作用,因为在单元格选择 UI 事件完成之前不会触发 UI 事件,直到发生数据处理才会完成,这完全违背了这一点。我还尝试将 UI 调用移动到 willSelectRowAt 没有任何区别。 我想知道如何让用户知道涉及 UI 事件的加载任务。
如果您想知道为什么我不在显示单元格之前而不是在选择时进行数据处理,那是因为每行的处理量很大。如果这样做,表格视图将需要很长时间才能出现
【问题讨论】:
-
我不知道您何时要加载大量数据,以及为什么要加载。例如,您想加载大量数据来填充表格视图吗?还是选择行后要加载大量数据?
-
你好,达尼洛。它是在选择行之后。该过程是显示表格视图,让用户选择一个单元格,加载有关用户选择的数据,然后在下一个视图中显示选择及其信息
标签: ios swift uitableview uiactivityindicatorview swift4