문제

나는 호출 할 때마다 3 번 팝업하는 uialert가 있습니다. 클릭하기 전에 나타나고 사라집니다. 그게 될 수 있습니다 viewDidLoad 그 자체가 3 번이라고 부르고 있습니까?

나는 Uialert를 구현했다 viewDidLoad 내 앱의 :

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:alertMessage  delegate:self cancelButtonTitle:ok otherButtonTitles:nil];

이것이 viewDidLoad RootViewController에서는보기를 관리합니다.

- (void)viewDidLoad {
    Kundenkarte *kartenAnsicht = [[Kundenkarte alloc]
                                                initWithNibName:@"Kundenkarte" bundle:nil];
    kartenAnsicht.rootViewController = self;
    kartenAnsicht.viewDidLoad;
    self.map = kartenAnsicht;


    [self.view addSubview:kartenAnsicht.view];


    [kartenAnsicht release];
//  [super viewDidLoad];

}

그만큼 viewDidLoad 그것은 uialert가 kartenAnsicht 컨트롤러를 봅니다.

아이디어가 없어서 누군가가 나를 도울 수 있기를 바랍니다.

도움이 되었습니까?

해결책

우선, 당신은 어떤 유형의 디스플레이를 넣지 않아야합니다. viewDidLoad. 이 방법은 View가 먼저 NIB에서 읽은 후 무대 뒤에서 구성을위한 것입니다. 뷰가 처음로드 된 후에보기가 메모리에서 유지되고 NIB에서 다시로드되지 않기 때문에 뷰가 표시 될 때마다 호출 될 것이라는 확신은 없습니다.

대신, nsalert를 불러 일으키려면 전화를 걸어 viewWillDisplay 또는 viewDidDisplay. 이것은보기가 나타날 때마다 경고를 표시합니다.

의심 스럽다 viewDidLoad 세 번이라고 불리는 것이지만, 그 방법을 확인하기 위해 NSLOG를 방법에 넣어 몇 번이나 호출되는지 확인하십시오.

당신이 그렇게 말할 때 :

내 앱의 ViewDidload ()에서 nsalert를 구현했습니다.

... 그게 무슨 뜻입니까? 방법에 정확히 어떤 객체가 있습니까? 응용 프로그램 대의원 인 경우 응용 프로그램 대의원 프로토콜이 응답하지 않기 때문에 작동하지 않습니다. viewDidLoad. UiviewController에 있어야합니다.

edit01 :

같은 문제가있는이 게시물을 참조하십시오. uialertview는 한 번만 대신 전화 당 세 번 팝업됩니다.

짧은 대답 : 당신은 그것을 풀어서 경고를 죽입니다. 뷰 컨트롤러의 속성으로 유지하거나 더 나은 방법으로 경고를 표시하십시오. runModal 대신에 show 즉시 반환 된 버튼 번호를 캡처합니다.

다른 팁

전화 할 필요가 없습니다 -viewDidLoad 자신은 펜촉화 메커니즘에 의해 자동으로 실행됩니다. 즉, 추가 호출을받습니다 -viewDidLoad: 하나는 디자인별로, 그리고 당신이 그것을 부를 때마다 엑스트라.

경고 호출 주변의 코드를 보는 것이 도움이 될 것입니다.

도달 가능성이 변경 될 때마다 경고를 사용하고 있습니다. 도달 가능성이 반복적으로 점검되므로 경고는 반복적으로 호출 될 수 있습니다. 이를 완화하기 위해 알림 코드를 그렇게 랩합니다.

if (!myAlert) { /* set up and show myAlert */ }

그러나 이것의 한 가지 문제는 취소 버튼을 클릭하면 경고가 NIL이 아닌 상태로 유지되므로 조건 때문에 다시는 표시 할 수 없다는 것입니다. 누군가 가이 응답을 수정하여 추가 할 수 있다면 그것은 좋을 것입니다. Myalert를 파괴 할 취소 버튼에 핸들러를 추가 할 수 있다고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top