カテゴリ: Tips
presentViewControllerが異常に遅いバグ
スポンサーリンク
TableViewのセルが選択された時のイベント
- UITableViewDelegate#tableView:didSelectRowAtIndexPath:
の中で
- UIViewController#presentViewController:animated:completion
を呼んでViewControllerを表示しようとすると異常に遅い。もしくはその待ち状態の間にセルをもう一度選択クリックすると表示されるようになる。
自分のバグだろうかと色々探ったけど理由がわからず・・・以下のようにDelayして実行したら即座に表示されるようになった。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ MYViewController *con = [[MYViewController alloc] init]; [self presentViewController:con animated:YES completion:nil]; });
納得がいかずStackoverflowを見ると同じ問題に遭遇している人たちがいて、同じように解決してました。
UITableView and presentViewController takes 2 clicks to display
どうやらiOS 7で仕込まれたバグっぽい。iOS 8でも同様のバグがあります。
- UITableViewDelegate#tableView:didSelectRowAtIndexPath:
- UIViewController#presentViewController:animated:completion
の組み合わせで必ず起きるというわけではないみたいです。
この記事をシェア
スポンサーリンク