0

親ビューのボタンをクリックするとすぐにロードされるサブビューを実装しました。サブビュー(基本的にアクティビティインジケータを保持しています)をロードした後、プログラムはメソッド(サーバーからデータを取得するため、時間がかかる)を処理することになっています。

しかし、私はそれを行うことができません。

親ビューのボタンをクリックすると、最初にメソッドが処理され、その後にのみサブビューが画面にロードされます。

これはなぜですか?ビューがロードされた後にのみメソッドをロードするために使用できる特定の関数はありますか?

4

2 に答える 2

2

私は同じ問題に直面しており、NSAutoreleasePool を使用してこの問題を解決しました。お役に立てば幸いです。

- (void)viewDidLoad {

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

 }

 -(void) loadXml{

        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

       NSString * path =@"http:www.YOUR_RSS_FEED.com";

       [self parseXMLFileAtURL:path];       //(Instead of ViewDidAppear)

      [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

       [pool drain];

   }

ありがとう。

于 2010-06-08T11:56:50.773 に答える
0

いくつかの異なるアプローチ:

サブビューに画像をロードし、単なるビューではなくより複雑なことを行う機能がある場合、代わりにそれを ViewController にすることをお勧めします。

上部の ViewController で次を使用します。

- (void) loadView { 
    [super loadView];
}

ビューを表示する際に準備する必要があるものを設定します。

使用:

-(void) viewDidLoad {

}

追加のセットアップを行います。

あなたの場合、loadView メソッドにインジケーターを追加してから、viewDidLoad メソッドでデータの取得を開始する必要があるように聞こえます。

Web サービスなどにアクセスしている場合は、常に別のスレッドでこれを行ってください。(これを達成するための適切で簡単な方法については、NSOperationを調べてください)。

于 2010-06-08T11:57:49.983 に答える