2012-03-15 61 views
0

我有两个视图,第一个“A”,有一个按钮,触发一个web服务来验证一个代码,如果验证成功,它执行segue到视图“B”。uiprogressview更新问题

鉴于B,I有这个

- (bool) viewDidUpload 

    dispatch_async(kBgQueue, ^{ 


    [self processContacts]; 
    [self sendPost]; 
}); 



-(void) processContacts 

    //Process contact address 

-(void) sendPost 
    //Process web services call 
    //If web service call is OK, call [self updateBar] 
      [self performSelectorOnMainThread:@selector(updateBar) 
           withObject:nil waitUntilDone:YES]; 

更新:我实现GDC发送sendPost和processContacts的背景,然后sendPost方法具有使用performSelectorOnMainThread进行updateBar呼叫:,的问题是,执行不会在此方法中输入,并且在不更新栏的情况下结束。 sendPost和processContacts现在在后台运行,但是我不知道如何在每次有效连接完成时在main中执行updateBar,然后返回到后台并再次执行其他连接。

非常感谢

回答

1

您应该在后台线程中执行所有计算和通信。然后在你的主线程中做GUI更新(比如进度条)。

看看GCD。这真的很容易使用,并会解决您的问题,我敢肯定。

+0

我已经实现了GDC发送到后台连接方法,但是,例如,如果有100个连接完成,并更新主人人酒吧,我不知道该怎么做。谢谢 – roof 2012-03-15 19:15:05

+0

不知道我是否明白你在这里问什么?如果您知道启动时的连接数量,则可以使用该数字来估计剩余的进度条,直到进度条满了为止。然后,每次连接完成后,调用主线程并更新进度条(增加计数器或其他值以跟踪进度)。 – 2012-03-16 07:06:18

1

这样看来,你正在使用互联网,对我这样做是使用ASIHTTPRequest的Git的库最好的方法,阅读和下载它,然后使用它,这是非常有用的,可享受:

http://allseeing-i.com/ASIHTTPRequest/

+0

谢谢克里斯托弗,我试过使用它,但是我给了我很多麻烦与IOS5一起使用,我按照说明使它兼容,但它没有成功。你有没有关于如何使它与IOS5一起工作的信息? – roof 2012-03-15 14:19:07

+0

如果你能指出你的问题,我将非常乐意为你提供帮助,我想你有新的xCode中使用的ARC(自动引用计数)问题,其中GitHub文件仍然没有更新到它,只是去在xcode项目中,点击目标,转到编译源代码,选择HTTP请求文件双击并添加以下内容:-fno-objc-arc这将使编译器跳过以下文件进行ARC编译。 – 2012-05-28 08:24:04