두 개의 다른보기 컨트롤러가 있습니다. 하나는 대시 보드 용이고 다른 하나는 등록 용 컨트롤러입니다. 사용자가 alertview를 통해 로그인 할 때까지 사용자가 대시 보드에서 아무 것도 할 수 없도록하고 싶습니다. 따라서 사용자가 대시 보드로 돌아가거나 취소를 누를 때마다 로그인하지 않을 때마다 로그인 경고가 팝업으로 표시됩니다.viewWillAppear UIAlertView가 표시되지 않습니다.
사용자가 등록보기의 탐색 모음에서 뒤로 단추를 누르지 만 사용자가 등록 페이지의 경고에서 확인을 클릭하면 작동하지 않는 경우를 포함하여 모든 경우에 완벽하게 작동합니다.
@property(strong) UIAlertView * alert;
//...
-(void)viewWillAppear:(BOOL)animated
{
user_email = [[NSUserDefaults standardUserDefaults] stringForKey:@"email"];
if (user_email==nil){
[self auto_login];
} else //...
}
-(void)auto_login
{
alert = [[UIAlertView alloc] initWithTitle:@"Login" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Login",@"Forgot Password",@"Register",nil];
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[alert show];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (buttonIndex) {
case 0:
{
self.debug.text = @"Cancel";
[self auto_login];
break;
}
//...
default:
{
self.debug.text = @"Register";
[self nav_register];
break;
}
}
}
-(void)nav_register
{
RegisterProfileController *rvc = [[RegisterProfileController alloc] init];
[self.navigationController pushViewController:rvc animated:YES];
}
등록 뷰 컨트롤러가이 코드를 포함 :
대시 보드 뷰는이 코드가 포함되어
-(void)catch_registration
{
NSString *response = [[NSString alloc] initWithData:self.httpdata encoding:NSASCIIStringEncoding];
if([response isEqualToString:@"OK"]){
UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"..." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
successAlert.alertViewStyle = UIAlertViewStyleDefault;
[successAlert show];
}
else //...
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([alertView.title isEqualToString:@"Success"])
[self.navigationController popViewControllerAnimated:TRUE];
}
디버깅 후, 내가 아는을 그 등록 뷰 컨트롤러에서 clickedButtonAtIndex
실행, [alert show]
실행 후 대시 보드보기 컨트롤러에서는 clickedButtonAtIndex
이 실행되지 않지만 경고는 표시되지 않습니다.
왜 경고가 표시되지 않거나 어떻게 디버깅 할 수 있습니까?
viewWillAppear 코드를 viewDidAppear로 이동해보십시오. 현재보기를 제공 할보기가 있기 전에 경고를 표시하려고하기 때문에 viewDidAppear로 이동하십시오. (사실 귀하의 질문을 다시 읽으면 나는이 문제를 이해하고 있는지 100 % 확신하지 못합니다.) –
아니, 그게 문제였습니다. viewDidAppear 메서드가 있다는 것을 몰랐습니다. 이제 작동합니다. – Cbas
좋습니다. 당신이 그것을 알아 낸 것을 기뻐. :) –