2012-03-15 17 views
0

私は2つのビュー "A"を持っています.1つのコードを検証するためにWebサービスを起動するボタンがあり、検証が成功すると、ビュー "B"に対するセグを実行します。ビューBでuiprogressview更新の問題

は、私はこの

- (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]; 

は、更新した:私はこの問題は、実行することである:、次いでsendPost方法はupdateBar呼び出しがperformSelectorOnMainThreadを用いて行った、バックグラウンドでsendPostとprocessContactsを送信するGDCを実装しましたこのメソッドでは入力されず、バーを更新せずに終了します。 sendPostとprocessContactsはバックグラウンドで実行されるようになりましたが、有効な接続が完了するたびにメインでupdateBarを実行する方法がわからず、バックグラウンドに戻り、残りの接続をやり直します。

感謝

答えて

1

バックグラウンドスレッドですべての計算と通信を実行する必要があります。その後、あなたのメインスレッドでGUIのもの(進捗バーのようなもの)の更新を行います。

GCDをご覧ください。それは本当に使いやすいですし、私は確信しているあなたの問題を解決します。

+0

私はGDCを実装してバックグラウンドの接続方法を送信していますが、たとえば、100個の接続が完了していて、メインのバーを全員に更新している場合は、どのように行うのか分かりません。ありがとう – roof

+0

私はあなたがここで何を求めているのか分かりませんか?開始時に接続数を知っている場合は、その数を使ってプログレスバーがいっぱいになるまでの残り時間を見積もります。その後、各接続が完了したら、メインスレッドを呼び出してプログレスバーを更新します(カウンタをインクリメントして進行状況を追跡します)。 –

1

だからあなたがインターネットを使用しているようだと、私はそうするための最善の方法は、ASIHTTPRequestのGitのライブラリを使用している、それを読んで、それを使用し、それをダウンロードし、それが楽しみ、非常に便利です。

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

+0

ありがとう、私はそれを使用しようとしましたが、私はIOS5で使用するために多くのトラブルを与えました、私はそれを互換性があるように指示に従いますが、それは成功しませんでした。 IOS5でどのように動作するかについての情報はありますか? – roof

+0

あなたが問題を見つけることができれば、私はあなたを助けてくれることを喜んでお待ちしております.GCのファイルがまだ更新されていない新しいxCodeで使用されているARC(Automatic reference count) xcodeのプロジェクトをクリックし、ターゲットをクリックしてソースをコンパイルし、HTTPリクエストファイルをダブルクリックして以下を追加します:-fno-objc-arcこれは、コンパイラが以下のファイルをスキップしてARCをコンパイルするようにします。 –