2

UINavigationControllerでABPersonViewControllerを使用して、連絡先情報を表示および編集しています。これは、これまで最新のxcodeバージョン(現在4.5.2)とiOS6を使用して機能していました。ユーザーがABPersonViewControllerの[編集]ボタンを選択すると、ビューは(期待どおりに)編集モードになりますが、(既存の写真を追加または変更するために)[写真]を選択すると、次の例外を除いてアプリケーションがクラッシュします。 。

**キャッチされなかった例外'UIViewControllerHierarchyInconsistency'が原因でアプリを終了します、理由:'ビューは一度に最大で1つのビューコントローラーにのみ関連付けることができます!意見 ; }; layer =>は<_UIActionSheetHostingController:0x4da1190>に関連付けられています。このビューを<_UIActionSheetHostingController:0x5f38830>に関連付ける前に、この関連付けをクリアしてください。*

これはiPadに固有のようです-ポップオーバー内に表示されない限り、iPadがアクションシートをポップオーバーとして扱う方法と関係があると思います。どんな助けでも大歓迎です。

4

1 に答える 1

0

これは、UIViewControllerの新しい方向付けメソッドの問題のようです。

- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

選択写真VCはそれらを実装していないようです。したがって、トップVCが実装していない場合でも、ルートVCがそれらを実装していることを確認してください。

コード内:

@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate {
    return [self.topViewController shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations {
    UIInterfaceOrientationMask topControllerOrientationMask = [self.topViewController supportedInterfaceOrientations];
    return topControllerOrientationMask ? topControllerOrientationMask : UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    UIInterfaceOrientation topControllerOrientation = [self.topViewController preferredInterfaceOrientationForPresentation];
    return topControllerOrientation ? topControllerOrientation : UIInterfaceOrientationPortrait;
}
@end
于 2013-07-29T04:53:13.120 に答える