dismissViewControllerAnimated使用quickdialog不起作用

时间:2013-01-26 14:15:17

标签: iphone ios quickdialog

我正在使用QuickDialog来推送登录表单。除了视图控制器不能被解雇外,一切正常。像这样的代码:

- (void)onLogin:(QButtonElement *)buttonElement
{
    [self loading:YES];
    Info *info = [[Info alloc] init];
    [self.root fetchValueUsingBindingsIntoObject:info];
    [self.client loginWithUsername:info.login password:info.password onSuccess:^(NSDictionary *result) {
        NSLog(@"user signed in");
        [self loading:NO];
        [self dismissViewControllerAnimated:YES completion:nil];
    } onFailure:^(NSError *error) {
        NSLog(@"login error");
    }];
}

我正在使用这些代码推送此视图控制器

QRootElement *root = [[QRootElement alloc] initWithJSONFile:@"loginform"];
LoginController *loginController = (LoginController *)[QuickDialogController controllerForRoot:root];
[self.navigationController pushViewController:loginController animated:YES];

1 个答案:

答案 0 :(得分:2)

我很想告诉你这样做:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

这是Apple的文档:

  

呈现视图控制器负责解除视图   它呈现的控制器。如果在显示的视图上调用此方法   但是,控制器本身会自动转发消息   呈现视图控制器。

我不确定为什么你的电话不是“转发”和关闭。也许你提出使用presentModalViewController?如果是这种情况,请与dismissModalViewControllerAnimated保持平衡,这可能会解决。

当然,我们都假设您的其余代码是正确的,并且您在登录时实际上看到NSLog(@"user signed in");打印。

祝你好运!

<强>&GT;&GT;更新&lt;&lt;

哇,对不起。我刚刚注意到你写了“QuickDialog来推送登录表单”,并看到你添加了一个如何呈现这个屏幕的例子。由于您将其推送到导航控制器堆栈,因此需要将其弹出。这将解决问题:

[self.navigationController popViewControllerAnimated:YES];

享受。