0

NSMetadataQueryDidUpdateNotification から時折更新を取得しています。これらはバックグラウンドの非同期スレッドで実行されていますが、それでも時々アプリの速度が低下します。

問題は、これにより TableView が十分に遅くなるため、行をクリックしてもすぐにプッシュされないことがあります。それは tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 内の単純な呼び出しです

[[self navigationController] pushViewController:detailViewController animated:YES];
[detailViewController release];

行を数回タッチすると (フラストレーションで)、アプリのビューコントローラー スタックが台無しになります。

nested push animation can result in corrupted navigation bar
nested push animation can result in corrupted navigation bar
nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Unbalanced calls to begin/end appearance transitions for <DetailViewController: 0xdabc0c0>

これが起こらないようにして、行の最初のタッチのみを受け入れるにはどうすればよいですか?

4

1 に答える 1

0

今のところ、これを部分的に解決しました。私は使用しようとしました:

[self.view setUserInteractionEnabled:NO];

私の追加ボタンメソッドとtableView didSelectRowAtIndexPathでは、複数回押す問題は修正されませんでした。したがって、それらを個別に無効にする必要がありました。

追加ボタンの作成:

    UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addNew:)];
    self.addBtn = bbi;
    [[self navigationItem] setRightBarButtonItem:bbi];

addNew: メソッドの先頭に

[self.addBtn setEnabled:NO];

私のtableView didSelectRowAtIndexPathメソッドの冒頭に

[self.myTable setAllowsSelection:NO];

ビューに表示されます:

[self.addBtn setEnabled:YES];
[self.myTable setAllowsSelection:YES];
于 2012-05-03T18:06:07.607 に答える