2011-06-12 9 views
5

배경에서 돌아 왔을 때 다시 표시되지 않도록 UIActionSheet를 앱 델리 케이트에서 닫으려고합니다. 하위 시트보기 컨트롤러에서 viewDidUnload 또는 viewDidDisappear 메서드의 작업 시트를 닫으려고했으나 응용 프로그램 배경이 호출 될 때 호출되지 않습니다.App Delegate에서 UIActionSheet를 어떻게 푸시 하시겠습니까?

따라서 앱 위젯을 사용하여 앱 배경을 표시 할 수있는 UIActionSheet 중 하나를 닫으려고합니다. 그러나 나는 무엇을 부를 지 알아낼 수 없다. 누구든지 해결책이 있습니까? 같은 것을 성취하는 것이 더 좋은 생각입니까?

감사합니다.

+0

viewWillAppear 메서드에서 actionSheet를 닫을 수 있습니다. – Robin

+0

그 중 하나가 작동하지 않습니다. viewDidAppear도 아니다. –

+0

'UIActionSheet' 객체를 클래스의 인스턴스 변수로 사용 하시겠습니까? – Robin

답변

4

@Dylan 당신이 할 수있는 일은 uiactionsheet 변수의 속성을 선언하고 합성 할 수 있다는 것입니다.

그런 다음 applicationDidBecomeActive 메소드에서 appdelegate하면 ​​[viewController.actionSheet dismissWithClickedButtonIndex:0 animated:NO]과 같은 작업을 수행하여 dismiss 메소드를 호출하여 해당 조치 시트를 닫을 수 있습니다. appdelegate에 참조가 있다고 가정합니다.

그렇다면 uiwindow 위에 표시된 모든 UIView를 찾은 다음 uiviews 중 하나가 작업 표를 표시하는 클래스 종류인지 확인하십시오. 그 후에 작업 시트를 보여주는 viewController를 잡고 나면 위에서 설명한 것과 같이 작업 시트를 닫을 수 있습니다.

+1

고마워요! 완벽하게 일했습니다! 방금 당신이 말한 것처럼 액션 시트를 보여주는 viewController를 찾았고'actionSheetCancel'을 실행하여 그것을 닫았습니다. 감사합니다. –

3

applicationDidBecomeActive 방법을 appDelegate으로 해고하려고합니다.

+0

어떤 코드가 그렇게할까요? –

+0

읽기 UIActionSheet 클래스 여기서 Refrence는 경고 시트 또는 팝업을 숨기는 메소드입니다. 경고를 명시 적으로 해제해야 할 때이 방법을 사용하십시오. // 사용자가 버튼을 누르면 호출 할 필요가 없습니다. - (void) dismissWithClickedButtonIndex : (NSInteger) buttonIndex animated : (BOOL) animated이 메소드는 actionSheet 객체에 의해 호출됩니다. –

+0

액션 시트 인스턴스에 대한 액세스 권한이 있는지 확인하십시오. –

관련 문제