我在UITableViewController(我称之为Controller A )中选择一个单元格,该单元格来自另一个UIViewController的弹出窗口(我将调用 B ) 。 B 设置为 A 的代表,因此当用户与 A B 发送消息>。这一切都按我想要的方式进行。
我已经在 A 中添加了一些代码,以便在用户选择其中一行时开始从CoreData加载信息。这需要一段时间,所以我想在用户做出选择后立即显示等待屏幕。在this question我刚刚解决了如何在实际开始加载数据之前显示等待屏幕,但在控制器之间传递消息时它似乎不起作用。
我的等待屏幕是一个UIView子类,它只有一个UIActivityIndicator和一个带有快速消息的UILabel。等待屏幕是 B 的@property
,我打电话给
self.waitingView = [[WaitingView alloc] initWithFrame:self.view.frame];
[self.waitingView setHidden:YES];
[self.view addSubview:self.waitingView];
在 B 的viewDidLoad
中。然后,我在 A 上@protocol
需要showWaitScreen
。在 A 的willSelectRowAtIndexPath
中,我致电[self.delegate showWaitScreen];
。在 B ,我有
-(void) showWaitScreen
{
[self.waitingView setHidden:NO];
}
我已经设置了一些断点,所有的呼叫都按照我想要的方式进行,但我从未看到过等待屏幕。我最好的猜测是因为 A 仍在 B 上作为弹出窗口打开,这阻止了对 B 的UI的任何更改。是这样的吗?如果那不是问题,那是什么?在任何情况下,如何让我的等待屏幕出现?
编辑:有关我的屏幕布局的一些信息: B 是一个非常混乱的屏幕 - 有一个简单的背景(UIView
)占据了整个屏幕。在UIView
之上,有UIScrollView
和UIToolbar
- 工具栏只占据了屏幕的最底部。在UIScrollView
中,有5个不同大小的UITableView
,它们之间的间隙很小。从其中一个表中显示 A ,大致会填充屏幕的上半部分。等待屏幕是一个正方形,每边都是屏幕宽度的一半,并以屏幕为中心。因此,等待屏幕将与 A 的一部分以及 B 上的几个UITableView
重叠。