表单模式视图控制器不会在iOS6中解除

时间:2012-12-17 09:54:58

标签: objective-c ios uiviewcontroller ios6

我试图在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中的错误。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

尝试将dismissViewController邮件发送至self而非self.presentingViewController。它将被转发到右侧的View Controller。

希望这有帮助!

相关问题