1

私の最初のロードでは、すべてうまくいきます。これが私のNSlogです

2013-03-07 09:15:57.289 SAMPLE[10566:207] -->Starting viewDidLoad
2013-03-07 09:15:57.775 SAMPLE[10566:207] -->Starting viewDidAppear
2013-03-07 09:15:58.518 SAMPLE[10566:207] all done!
2013-03-07 09:15:58.518 SAMPLE[10566:207] stories array has 4 items
2013-03-07 09:15:58.527 SAMPLE[10566:207] -->Starting CellForRowAtIndex

しかし、ナビゲーションの [戻る] ボタンをクリックしてビューをもう一度クリックすると、セルに値が入力されるまでハングします。以下の NSlog を参照してください

2013-03-07 09:16:06.252 SAMPLE[10566:207] -->Starting viewDidLoad
2013-03-07 09:16:06.309 SAMPLE[10566:207] -->Starting CellForRowAtIndex
2013-03-07 09:16:07.019 SAMPLE[10566:207] -->Starting CellForRowAtIndex
2013-03-07 09:16:07.679 SAMPLE[10566:207] -->Starting CellForRowAtIndex
2013-03-07 09:16:08.198 SAMPLE[10566:207] -->Starting CellForRowAtIndex
2013-03-07 09:16:09.242 SAMPLE[10566:207] -->Starting viewDidAppear

私のviewDidAppearには、これに次のものがあります。

- (void)viewDidAppear:(BOOL)animated {
    NSLog(@"-->Starting viewDidAppear");   

     [super viewDidAppear:animated];

    if ([[xmlParser branch] count] == 0) {
         [self loadDatafromServer];   // Goes and runs my XML Parser and fill the array.

    }
         [self loadBranchs];  // This just loads my annotations for my map
  [self.tableView reloadData];       
}

ここに任意のアイデア。私が言ったように、彼女は初めて完全にロードしますが、ユーザーが戻って入ってくると、最初にセルにデータが入力され、遅延が発生します. ビューを開いてから入力したい。インジケーターはそれらを表示し、次にその読み込みを表示します。

4

1 に答える 1

2

このメソッドは、ビューを表示する前にそれに関連付けられた追加のタスクを実行するため、viewDidAppearにそのタスクを実装しないでください。したがって、遅延が発生します。viewWillAppearメソッドに実装することをお勧めします。

 - (void)viewWillAppear:(BOOL)animated {

     [super viewWillDidAppear:animated];

        if ([[xmlParser branch] count] == 0) {
             [self loadDatafromServer];   // Goes and runs my XML Parser and fill the array.

        }
             [self loadBranchs];  // This just loads my annotations for my map
      [self.tableView reloadData];       
    }

それがあなたを助けることを願っています:)

于 2013-03-07T07:35:56.680 に答える