0

iOS6 でフォームシートのモーダル ビューを閉じようとしています。iOS5 では完全に正常に動作しますが、6 では失敗します (プロジェクトは両方で ARC を使用します)。

失敗したときのスタックは次のとおりです。

#0  0x0175a267 in objc_msgSend_stret ()
#1  0x006d55bd in -[UIView(Geometry) bounds] ()
#2  0x006cc707 in -[UIWindow _updateCurrentTintView] ()
#3  0x0075117b in -[UITransitionView transition:fromView:toView:removeFromView:] ()
#4  0x0097df44 in __91-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:]_block_invoke_0236 ()
#5  0x0097d4eb in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] ()
#6  0x0077ba11 in -[UIViewController _dismissViewControllerWithTransition:from:completion:] ()
#7  0x0077aecd in -[UIViewController dismissViewControllerWithTransition:completion:] ()
#8  0x0077bbdb in -[UIViewController dismissViewControllerAnimated:completion:] ()
#9  0x00056a50 in -[HandDeviceToAssessorViewController dismiss:] at <directory of file>

ビュー コントローラは次のように作成されます。

+ (HandDeviceToAssessorViewController *)handDeviceToAssessorWithWellDoneView
{
    static dispatch_once_t pred;
    static HandDeviceToAssessorViewController *viewController = nil;

    dispatch_once(&pred, ^(void)
                  {
                      viewController = [[HandDeviceToAssessorViewController alloc] initWithNibName:@"WellDoneHandDeviceToAssessorView" bundle:[NSBundle mainBundle]];
                  });

    viewController.modalPresentationStyle = UIModalPresentationFormSheet;
    return viewController;
}

コードで表示されます:

HandDeviceToAssessorViewController *handBackModal = [HandDeviceToAssessorViewController handDeviceToAssessorWithWellDoneView];
    handBackModal.delegate = self;
    [self presentViewController:handBackModal animated:YES completion:nil];

ビューコントローラーはによって閉じられます。

- (IBAction)dismiss:(id)sender
{
    if ([self.delegate respondsToSelector:@selector(viewWillClose)])
    {
        [self.delegate viewWillClose];
    }

    [self.presentingViewController dismissViewControllerAnimated:YES completion:^(void)
    {
        if ([self.delegate respondsToSelector:@selector(viewDidClose)])
        {
            [self.delegate viewDidClose];
            self.delegate = nil;
        }
    }];
}

iOS6のバグではないことを疑います/願っています。これを修正する方法についてのアイデアはありますか?

4

1 に答える 1

1

の代わりににdismissViewControllerメッセージを送信してみてください。右側のViewControllerに転送されます。selfself.presentingViewController

お役に立てれば!

于 2012-12-17T10:02:59.480 に答える