我正在处理一段代码,当用户按下提交按钮时,系统会要求他在能够进入应用程序屏幕之前更新他/她的密码。因此,当您按下按钮时,“登录”按下程序执行,用户在应用程序中进行身份验证,在完成框中,我们显示“重置密码”'查看控制器。但是,推送似乎不起作用。我在块之前和之内打印了navigationController对象,它不是nil。
NSLog(@"%@", [self.navigationController description]);
__weak __typeof(self) weakSelf = self;
[[AppDelegate sharedDelegate] login:self.userIdentifierTextField.text
password:self.passwordTextField.text
persistence:NSURLCredentialPersistencePermanent
completion:^(BOOL success, NSError *error) {
SignInViewController *innerWeak = weakSelf;
if ([[Features sharedFeatures] allowsAdminMandatedPasswordReset]) {
//User needs to add new password
ResetPasswordViewController *resetViewController = [[ResetPasswordViewController alloc] initWithNibName:[ResetPasswordViewController nibName] bundle:nil];
NSLog(@"%@", [self.navigationController description]);
if (innerWeak.navigationController != nil) {
[innerWeak.navigationController pushViewController:resetViewController animated:YES];
}
}
[MBProgressHUD hideAllHUDsForView:weakSelf.view animated:YES];
mainWindow.userInteractionEnabled = YES;
}];
这里,当我比较navigationController对象上的两个nslog时,它们是相同的。即使以模态方式呈现resetViewController也在完成块中工作,但不知何故推送不起作用。我花了很多时间试图弄明白,而且我对发生的事情感到很困惑。
更新:使用以下作品给我。但我仍然希望通过weakSelf.navigationController
来解决问题[[AppDelegate sharedDelegate].navigationController pushViewController:resetViewController animated:YES];