0

보기 컨트롤러의 메소드에서 UIAlertView 인스턴스에 문제가 있습니다. 이 UIViewController 다른 UIViewController에서 제시하고, 특정 지점에서 내가 인스턴스 메서드에서 UIAlertView 이런 식으로 표시 :경고보기 해지시 iOS 앱이 작동을 멈 춥니 다

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Upload Error", @"") 
                message:NSLocalizedString(@"It was not possible to complete the upload, do you want to try again?", @"") 
                delegate:self 
              cancelButtonTitle:NSLocalizedString(@"Cancel", @"") 
              otherButtonTitles:NSLocalizedString(@"Accept", @""), nil]; 

[alertView show]; 

내가 전에 또는이 경고 뷰가 표시되는 시간에 발표 UIViewController을 기각 할 수 있습니다, 어떤 일이 발생 해당 경고보기는 제시된보기 컨트롤러가 더 이상 화면에 나타나지 않을 때 표시되므로 경고보기가 제시되는보기 컨트롤러 상단에 표시됩니다. 그런 다음 경고보기 단추 중 하나를 두드리는 때 응용 프로그램이 충돌합니다. 대리자가 제공된보기 컨트롤러 였고 존재하지 않기 때문입니다. 이 상황을 어떻게 피할 수 있습니까?

감사합니다.

+0

경고의 종류가 OK-Cancel 인 경우 대리인이 참석해야하는 것이 이상적입니다. 귀하의 경우보기 컨트롤러, 실패시 다시 시도 할 수있는 사용자 선택권을 부여하기 때문에. 따라서 대리인은 작업을 다시 시작해야합니다. – Amar

답변

0

제시된보기 컨트롤러가 해제되기 전에 dismissWithClickedButtonIndex:animated:을 호출하여 경고보기를 닫으십시오. 아마도 viewWillDisappear : 또는 적절한 방법 일 수 있습니다. 또는 제공된보기 컨트롤러가 사라진 후에도 경고보기를 화면에 유지하려면 제시된보기 컨트롤러에 제시된보기 컨트롤러 참조를 전달하고 alertView의 대리자를 제시된보기 컨트롤러로 설정하십시오.

+0

그래서 'UIViewController'가 경고보기에 대한 참조를 갖도록해야합니다 ... 또는보기 컨트롤러가 언로드/사라질 때 경고보기가 표시되는지 감지하는 방법이 있습니까? – AppsDev

+0

제시된 viewcontroller가 vc1이고 제시된 viewcontroller가 경고보기를 표시하는 vc2이면 vc1의 참조를 vc2로 전달하십시오. 그런 다음 경고보기 대리인을 vc1로 설정합니다. –

+0

사용자가 "수락"을 탭하고 v2의보기를 업데이트하는 경우 일부 작업을 수행해야하므로 v2가 대리인이되어야하므로 v2가 표시 될 때 경고를 "중지"하거나 v2는 경고가 표시되면 해산하기 전에 위임자가되는 것을 중지하겠습니까? – AppsDev

0

답변은 원하는 동작에 따라 다릅니다.

먼저 확인 UIAlertView documentation :

대표 : 수신기의 위임 또는 전무는 대리인이없는 경우. 당신은 사용자 조치에 따라 '특별한 무언가'를하지 않으려면

  • , null을 전달합니다.
  • 에 따라 '특별한 것'을하고 싶다면 사용자 작업은 특수한 위임자를 만들어 사용자 작업을 처리하고 그 사용자를 유지합니다.
관련 문제