我正在使用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];
答案 0 :(得分:2)
我很想告诉你这样做:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
这是Apple的文档:
呈现视图控制器负责解除视图 它呈现的控制器。如果在显示的视图上调用此方法 但是,控制器本身会自动转发消息 呈现视图控制器。
我不确定为什么你的电话不是“转发”和关闭。也许你提出使用presentModalViewController
?如果是这种情况,请与dismissModalViewControllerAnimated
保持平衡,这可能会解决。
当然,我们都假设您的其余代码是正确的,并且您在登录时实际上看到NSLog(@"user signed in");
打印。
<强>&GT;&GT;更新&lt;&lt;
哇,对不起。我刚刚注意到你写了“QuickDialog来推送登录表单”,并看到你添加了一个如何呈现这个屏幕的例子。由于您将其推送到导航控制器堆栈,因此需要将其弹出。这将解决问题:[self.navigationController popViewControllerAnimated:YES];
享受。