0

UIAlertview을 사용하고 있습니다. viewdidload()에서 하나의 활동 표시기를 사용하고 있습니다. 그러나 지연 후 superview에서 제거하려고 시도했지만 다음 코드를 사용하여 UIAlertview을 제거한 후 app.Is에서 새로운 투명 레이어를 만들 수 없습니다 내 견해보다 여전히 뛰어나다.UIAlertview가 제대로 닫히지 않았습니까?

CODE

-(void)startAlertActivity 
    { 
     _alertView = [[UIAlertView alloc] initWithTitle:@"Loading " 
               message:@"\n" 
               delegate:self 
             cancelButtonTitle:nil 
             otherButtonTitles:nil]; 

     spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 

     spinner.center = CGPointMake(139.5, 75.5); // .5 so it doesn't blur 
     [_alertView addSubview:spinner]; 

     [spinner startAnimating]; 
     [_alertView show]; 
     [_alertView performSelector:@selector(stopAlertActivity) withObject:self afterDelay:5.0]; 


    } 

    -(void)stopAlertActivity 
    { [spinner stopAnimating]; 
     [_alertView dismissWithClickedButtonIndex:0 animated:YES]; 
    } 

내가 그것을 닫을 수 있습니다 방법은 여전히 ​​화면에 실행하는 투명 레이어 같은 그 모습?

예제 이미지 .... enter image description here

나를 위해 그 경고는 이제 화면이 아니라 배경이 밝은 파란색 색상이

충돌 보고서

[UIAlertView stopAlertActivity]: unrecognized selector sent to instance 0x9ab5eb0 
2013-08-02 12:20:43.822 AssamKart[5719:12203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIAlertView stopAlertActivity]: unrecognized selector sent to instance 0x9ab5eb0' 
*** First throw call stack: 
+0

당신이 제 3 자 컨트롤을 사용하는 dispatch_after 사용되어야 하는가? –

+0

그냥 alertview 및 표시기를 사용하여 nop.iam – Navi

+0

문제는'[_alertView performSelector : @selector (stopAlertActivity) withObject : self afterDelay : 5.0]; '변경 :'[self performSelector : @selector (stopAlertActivity) withObject : self afterDelay : 5.0]; ' –

답변

1

당신은 정말

_alertView = [[UIAlertView alloc] initWithTitle:@"Loading " 
             message:@"\n" 
             delegate:self 
           cancelButtonTitle:nil 
           otherButtonTitles:nil]; 

spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 

spinner.center = CGPointMake(139.5, 75.5); // .5 so it doesn't blur 
[_alertView addSubview:spinner]; 

[spinner startAnimating]; 
[_alertView show]; 



double delayInSeconds = 5.0; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [spinner stopAnimating]; 
    [_alertView dismissWithClickedButtonIndex:0 animated:YES]; 
}); 
+0

감사합니다. – Navi

0

alertView을 다시 해제 할 수 없습니다. 그것을 superView에서 움직입니다. 대신 dismissWithClickedButtonIndex:animated:에 전화해야합니다. 이것이 올바르게 해소 할 수있는 유일한 방법입니다 (docs 참조).
귀하의 경우, 나는 을 실행하는 인수로 alertView을 가진 메소드를 정의하고 지연 후에이 메소드를 수행합니다.

+0

크래시 보고서 – Navi

0

반투명 배경에 첨부되어 있기 때문에 수퍼 뷰에서 제거하지 말고 경고보기를 닫아야합니다. 지연 후 stopAlertActivity으로 전화하십시오.

[_alertView performSelector:@selector(stopAlertActivity) withObject:self afterDelay:5.0]; 

에 :

[self performSelector:@selector(stopAlertActivity) withObject:nil afterDelay:5.0]; 

stopAlertActivity 방법은 self하는 방법이 아닌 경고보기입니다

+0

으로 업데이트 된 질문을 확인하십시오.하지만 지연 5.0으로 다른 메소드를 호출하려고했는데 그 시간에 해제하려고하는 새 메소드 iam이 충돌했습니다. – Navi

+0

alerview가 아니라 자기를 호출해야합니다. 호출해야하는 메서드는 UIAlertView에 선언되어 있지 않지만 클래스 화면에서는 – Andrea

+0

을보고 오류 보고서로 업데이트 된 질문을 확인하십시오. – Navi

1

는이 라인을 변경해야합니다. stopAlertActivity에는 매개 변수가 없으므로 선택기에 개체를 전달할 수 없습니다.

+0

나는 똑같은 충돌 보고서를 시도했다 – Navi

+0

그럴 수는 없다. 내가했던 것처럼'_alertView'를'self'로 변경 했습니까? – rmaddy

+0

네 ~ 했어요 ...... – Navi

관련 문제