xcode viewcontroller隐藏字段不起作用

时间:2015-04-05 19:17:27

标签: ios xcode ipad

我有一个带有标签,文本字段,活动指示器和按钮控件的视图控制器,它们全部与IBOutlets绑定,并可从我的代码中访问。

当用户按下按钮时,我会隐藏一些字段,并设置活动指示符。然后我进行同步URL调用以获取一些JSON数据。

在同步请求返回之后,视图控制器不会更新以反映活动指示符和隐藏字段。我需要在请求返回之前发生这种情况,以便用户看到正在发生的事情。

我试过放入一个usleep(200000);并尝试[self.view setNeedsDisplay]; - 都无济于事。

在阻塞同步通话之前,有什么方法可以强制屏幕更新吗?我知道我可以去异步电话,但我真的不想这样做,因为我不能在应用程序中做任何事情,除非我得到我需要的数据......

谢谢, 杰里

这是我用来发送同步请求的代码:这是例程的相关部分' SendGetEventsRequest'。

NSURLResponse *response = nil;
NSError *error = nil;
[self.aiActivityIndicator startAnimating];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

以下是我在调用上述例程之前使用的其他例程:

- (IBAction)btnGetEvents:(id)sender {
// The user presssed the GetEvents button. Send the requested server to be processed.
[self.aiActivityIndicator startAnimating];
[self.lblCollectingEventNames setHidden:NO];
[self.lblEnterServerName setHidden:YES];
[self.btnGetEvents setHidden:YES];
[self.tfServerName setHidden:YES];
[self.view setNeedsDisplay];

[self SendGetEventsRequest:self.tfServerName.text];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[self.tfServerName resignFirstResponder];
[self btnGetEvents:self];
return YES;
}

基本上,当用户按下'去'键盘上的按钮,调用例程textFieldShouldReturn。我关闭键盘然后模拟按下按钮'获取事件'。

在btnGetEvents中,我启动活动指示器,隐藏/显示几个字段,然后调用sendGetEventsRequest。在我执行同步调用的代码中。

我正在设置活动指示器并在同步调用之前显示/隐藏字段,但在同步调用返回之后它们才会更新。我相信这是因为视图控制器在执行同步调用之前没有执行屏幕重绘。

因此,我需要弄清楚如何在同步调用之前更新屏幕。我希望附加代码和其他解释有所帮助。

1 个答案:

答案 0 :(得分:0)

哇,我无法相信我是唯一有这个问题的人。我修改了我的代码以使用异步调用,它运行正常。