presentPopoverFromBarButtonItemでwhich is already presentingエラー
iOS8、相変わらずちょくちょく仕様変更がされていますね。
ふと昔のアプリを使ってみると微妙に動かない場所が見つかったりします。
今回のアップデートで、UINavigationBarItem
から出していたUIPopoverController
が表示されないようになってしまいました。
// before UIImagePickerController* picker = [[[UIImagePickerController alloc] init] autorelease] ; UIPopoverController* popImagePicker = [[[UIPopoverController alloc] initWithContentViewController:picker] autorelease] ; UIBarButtonItem* item = [self.navigationItem rightBarButtonItem] ; [popImagePicker presentPopoverFromBarButtonItem:item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES] ;
こんな感じのエラーが返ってくる
Warning: Attempt to present <UIImagePickerController: 0x7d85a000> on <UINavigationController: 0x7b064200> which is already presenting <UIAlertController: 0x7bcb5500>
ios - Warning: Attempt to present ModalTableViewController on MainTableViewController which is already presenting (null) - Stack Overflow
↑を参考にしたところ、よくわからないけどしばらく後に実行すれば良いらしい。
// after UIImagePickerController* picker = [[[UIImagePickerController alloc] init] autorelease] ; UIPopoverController* popImagePicker = [[[UIPopoverController alloc] initWithContentViewController:picker] autorelease] ; dispatch_async(dispatch_get_main_queue(), ^ { UIBarButtonItem* item = [self.navigationItem rightBarButtonItem] ; [popImagePicker presentPopoverFromBarButtonItem:item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES] ; });
View周りの超微妙な仕様変更はなぜ行われるのだろうか・・・
更新されない昔のアプリを動かないようにして、最新のアプリを使わせるためなのだろうか・・・