タブバーコントローラがあります。タブの1つに3つのコンテナビューコントローラがあります。 1つだけが提示され、他のものは現時点で削除されます。これらのコントローラのビューはxibで定義されています。ビューコントローラを押した後に予期しない遅延が発生しました
これらのコンテナの1つでは、私はテーブルビューを持っています。
私がセルをクリックすると、コントローラをプッシュする必要があります。
初めてアプリケーションを起動すると、View Controllerをプッシュするときに遅延が発生します。私がテーブルビューに戻り、もう一度押すと、遅延はありません。
新しいコントローラーのdidSelectRowAtIndexPath
とviewDidLoad
には印刷時間があり、遅延は2〜4秒です。
EventDetailsViewController *eventDetailsVc = [[EventDetailsViewController alloc]init];
Events *event = [self.events objectAtIndex:indexPath.row];
eventDetailsVc.curentEvent = event;
NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
[f2 setDateFormat:@"dd MMMM, hh:mm:ss.SSS a"];
NSLog([f2 stringFromDate:[NSDate date]]);
dispatch_async(dispatch_get_main_queue(), ^{
[self.navigationController pushViewController:eventDetailsVc animated:YES];
});
通常のビューコントローラをプッシュするとき、私はdispatch_async
を使用していないが、これは私が見つけた提案の解決策の一つであった:
これは私がビューコントローラをプッシュするために使用するコードです。私もself.parentViewController.navigationController
、同じ結果を試してみました。
私はこの遅れについて何をすべきかわかりません、誰かが私を助けることができました。
ありがとうございました。
おそらくあなたのメインスレッドは何とかブロックされていますね。 – kirander
init()またはviewdidload()メソッドでmain uiをブロックするタスクを実行していますか? –
ありがとうございます。私はviewDidAppearでデータをダウンロードします。最初の回答のコメントの例を見ることができます。 – Paki