사용자가 로그인해야하는 앱을 개발 중입니다. 사용자가 내 앱에 로그인 한 상태에서 세션이 서버에서 유지 관리된다고 가정 해 보겠습니다. 네트워크 문제 또는 기타 이유로 인해 세션이 앞으로 서버에서 만료됩니다. 그런 다음 서버 요청에 대해 서버가 잘못된 요청을 던집니다. 나는이 상황을 파악하고 그의 세션이 만료되었고 다시 로그인해야한다는 경고를 사용자에게 전합니다 .Cleared NSUserDefaults
도 마찬가지입니다. Alert OK button
을 클릭하면 signIn 페이지가 사용자에게 표시됩니다.
여기 내 질문에 맞습니까? ViewController 설명서에서 그 내용은 presented ViewController
이 presenting ViewController
위에 표시됩니다. 따라서 SignInViewController
을 제시 한 후 이전 ViewController에 어떤 일이 발생했는지 알고 싶습니다. 메모리가 누출되거나 예기치 않은 동작이 발생합니까? 질문을 명확히하기 위해 아래 흐름을 추가했습니다. 나는 마지막 단계 후 알고 싶은 것은 ViewControllerB세션이 만료 된 후 로그인 페이지가 표시됩니다.
SignInViewController> ViewControllerA에> ViewControllerB> (세션이 만료)> AlertViewController> SignInViewController
을 (발표)- (void)presentLoginScreenAfterSessionIsExpired
{
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"employeeId"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"userName"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"emailId"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"profileImageData"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"role"];
/** showing alert to the User **/
UIAlertController *alert = [UIAlertController alertControllerWithTitle:
@"Oops!" message:@"Your Session Has Been Expired, Please Re-Login"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:
NSLocalizedString(@"OK", @"OK Action")
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)
{
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
/** presenting signInViewController **/
UIViewController *vc = [storyBoard instantiateViewControllerWithIdentifier:
@"signInViewController"];
[self presentViewController:vc animated:YES completion:NULL];
}];
[alert addAction:okAction]; // Here action is added to alert controller.
[self presentViewController:alert animated:YES completion:nil];
}
나는 당신의 질문을 이해하지 못한다; 세션이 만료되었고 SignInViewController를 제시해야한다는 이전 뷰 컨트롤러에 알릴 필요가 있습니까? –
아니요,보기를 알리고 싶지 않습니다. 난 그냥 SignInViewController 제시하고 싶습니다. 제 질문은 이미 제시된 견해에 일어난 일입니다. 제 수정 된 질문을 확인하십시오. –