0

In my application I've a UITableViewController and according to user selections instantiate a new UIViewController and sends a request for server via tcp socket.

Before the response arrives from server it already runs "viewDidLoad" method of the UIViewController. and in most cases responses hasn't arrived yet.

My questions is: How can I stop the viewDidLoad from running until I receive the response and process the data in the viewDidLoad method???

and also if possible to make this whole process asynchronous in the way that it doesn't stuck the whole application till response arrives.

Thanks!

4

2 に答える 2

0

最初に私の提案に従って、テーブルから行を選択してから、UIViewControllerこのクラスで &を呼び出す必要があります。

    -(void)GetData{}

次に、バックグラウンドスレッドのように呼び出します

    [self performSelectorInBackground:@selector(GetData) withObject:nil];

そして、サービスを呼び出してデータを取得するこのプロセスはバックグラウンドで機能し、その応答がサーバーから来ると、ビューにデータを入力したり表示したりするなどの処理を行います。

これを行うと、応答が来るまでアプリは停止しません。

于 2013-01-10T06:45:32.780 に答える
0

viewDidLoad で行っているデータ処理が何であれ、それを別の関数に移動します。サーバー通知ビューコントローラーからデータを受け取るか、デリゲートを呼び出し、通知またはデリゲート呼び出しを取得した後、データ処理用に分離したメソッドを呼び出してデータ処理を行います。

于 2013-01-10T06:12:12.440 に答える