当用户选择 UITable 行时显示等待屏幕

Posted

技术标签:

【中文标题】当用户选择 UITable 行时显示等待屏幕【英文标题】:Display waiting screen when user selects UITable row 【发布时间】:2013-04-05 18:27:27 【问题描述】:

当用户在我的表中选择一行时,我需要使用 CoreData 加载一堆数据。这需要几秒钟(至少在模拟器上运行时 - 尚未在设备上进行测试,但我想它仍然会很长)。我想在用户选择一行时显示一个加载弹出屏幕(我正在为 iPad 开发),然后在加载数据后让它消失。

在使用 UIButtons 时,我总是通过触发 TouchDown 和 TouchUp 方法来做到这一点。我将代码放在 TouchDown 上显示弹出框,然后在 TouchUp 中完成我所有的实际工作(因此在本例中从 CoreData 加载)。然后在 TouchUp 结束时,我关闭弹出框。

有没有办法像在按钮上一样拆分表格视图中的触摸?

【问题讨论】:

几秒钟!?你能优化你的数据吗?加载时间似乎太长了。 数据量很大。我不会立即使用所有这些,所以我想我可以尝试将其拆分一下,这样每次访问所需的时间就会更少,但是一次获得所有这些感觉就像是更有条理的方式来做这件事。很高兴知道,一旦我执行此加载,我就拥有了我需要的一切,所以我不必担心在某些情况下我可能已经加载了某个操作所需的数据但在其他情况下不会加载的情况。总之,我觉得这样比较好。 【参考方案1】:

因此,当我输入问题时,我在Apple Docs 中遇到了willSelectRowAtIndexPath 的一些内容,看起来就是为了解决这个问题。我在 SO 上没有看到任何其他主题,所以我想我会在这里使用这个“回答自己的问题 - 问答”功能,所以将来寻找这个的人可能会发现它更容易一些。


巨大的仅供参考:

我应该注意到willSelectRowAtIndexPath 实际上应该返回一个NSIndexPath,不像didSelectRowAtIndexPath(它返回void)。然而,我原来有

-(void)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

    //stuff

注意void 返回类型。 Xcode(4.5 版)允许这样做而没有任何错误或警告(甚至在自动完成列表中为我提供了它)。当我以这种方式运行代码时,我总是在libobjc.A.dylib'objc_autorelease: 中遇到一个不可见的断点(可能是因为我启用了“所有异常”断点?)。我无法越过这个断点,我从未在调试器输出控制台中获得任何调试信息,并且应用程序从未终止。我碰巧再次查看 Apple Doc 并注意到它应该返回一个 NSIndexPath (具体来说,代码应该解释为被选择的索引路径),但如果我没有碰巧在那里看到它,我永远不会知道问题出在哪里。


【讨论】:

以上是关于当用户选择 UITable 行时显示等待屏幕的主要内容,如果未能解决你的问题,请参考以下文章

UITable Cell 在单元格中有 UITextView 时无法选择

UITable 视图项有时会在选择时消失(取决于屏幕大小)

显示应用内购买 UIAlertView 时如何隐藏我的等待屏幕?

当用户触摸已选择的行时如何隐藏 UIPIckerView

WPF:DataGrid.RowDetailsTemplate:仅在选择单行时显示详细信息?

IOS:当用户选择行时,从表视图连接外围设备