0

将应用程序转换为可在 iPad 上运行。需要一些帮助来理解处理弹出框、解雇和活动指示器的顺序。

这是所需的顺序:

  1. 在弹出框内展示一个包裹在导航控制器中的表格视图。
  2. 从表中选择一行。
  3. 将该行中的信息发送到主视图控制器(父级)。
  4. 完全关闭弹出框。
  5. 显示一个活动指示器,表明正在进行处理。
  6. 做一些处理。
  7. 使活动指示器消失。
  8. 在主视图上绘制图形。

我已经能够完成上述所有操作,除了弹出框停留在屏幕上,直到所有处理完成并绘制图形。当弹出框消失时,活动指示器会立即显示。我尝试过委托、通知和设置器,但无济于事。似乎方法中的所有进程不一定按顺序执行,并且弹出视图会一直保持到所有内容都执行(在本例中为选择行方法)。

我应该把处理代码和活动指示器放在哪里,以便一切都按正确的顺序工作?

4

2 回答 2

1

这是一个非常直接的实现

检查以下列表

  1. 创建弹出窗口中显示的 viewController 的委托
  2. 将popover viewController的delegate设置为主viewController
  3. 在主 viewController 中保留对 popover 的引用,以便在收到事件后将其关闭。
  4. 收到事件后,在获取所选值后关闭弹出框
  5. 显示活动指示器视图或 HUD
  6. 处理完成后关闭活动指示器

执行此操作的演示应用程序的源代码

于 2013-06-08T05:01:23.413 回答
0

使UIPopoverController实例成为 iVar。在某些按钮方法或您设计的任何方法上使用所需的视图控制器分配它。从 popover 控制器的根视图控制器创建一个协议,并使父视图控制器符合它。在该didSelectRowAtIndexPath:方法上,将该委托调用到弹出框的父视图控制器。在父视图控制器中接收消息时,关闭弹出控制器实例并在那里进行处理。(如果项目不支持 ARC,请做好内存管理,因为 popover 可能会被分配多次。)

于 2013-06-08T05:01:36.650 回答