내 앱에 로그인 할 때 Facebook SDK를 사용하고 있습니다. 사용자가 로그인하지 않으면 로그인 VC가 모달로 나타납니다. 사용자가 로그인을하면 로그인 성공 여부를 App Delegate에 알립니다. 그렇다면 모달 로그인 VC를 취소하고 싶습니다. 앱 위임자로부터 어떻게합니까?응용 프로그램 대리인의 모달보기 컨트롤러 닫기
4
A
답변
4
appDelegate는 viewWindow를 호스팅하는 사람을 식별 할 수있는 방법이 필요하기 때문에 dismiss 메시지를 보낼 수 있습니다. 이 일을 가능하게하는 방법을 찾아야합니다. 한 가지 방법은 appDelegate "callDismissOnMeIfFaceBookFails"에 ivar을 정의하고이 상황에있을 때 설정하거나, 그렇지 않으면 설정하지 않을 것입니다.
만약 nil이라면, appDelegate는 오버 헤드없이 아무런 문제없이 해제 메시지를 보낼 수 있습니다. 귀하의 이익을 위해 무제한 메시징을 사용하십시오 (나는 항상 사용합니다). [옆으로 : 나는 너무 많은 코드를 본다. if (obj) [obj message]; 바로 메시지를 보낼 - - 경우하지 마십시오 obj가 아무 효과가 없습니다 효율적으로 처리 전무 인 경우]
편집 :!
그래서 당신은 클래스 AppDelegate에 있습니다. # 인터페이스에서 속성을 정의하십시오 :@property (nonatomic, strong) UIViewController *callDismissOnMeIfFaceBookFails;
및 구현시 @ 합성하십시오. 방법을 정의 모달 뷰 컨트롤러가 제시되기 전에
- (void)dismissLoginView
{
[callDismissOnMeIfFaceBookFails dismissModalViewControllerAnimated:YES];
callDismissOnMeIfFaceBookFails = nil; // don't need it now, this unretains it
}
그래서, 상기 제시하는 오브젝트 자체에 AppDelegate에 속성 "callDismissOnMeIfFaceBookFails"을 설정한다.
사용자가 성공적으로 로그인하면 로그인 객체는 appDelegate에 메시지를 보내고이를 통해 loginView를 dismiss하도록 지시합니다.
7
어떤 일이있을 때 당신은 어떤 특정의 ViewController가 제공되고 있는지 확인하고 싶을 경우 모달 뷰 컨트롤러
UINavigationController *navigationController = (id) self.window.rootViewController;
[[navigationController presentedViewController] dismissModalViewControllerAnimated:NO];
에게 제시하는 바와 같이, 발표의 ViewController를 해고하려고 (즉, 만 해제 할 수
표시된) 수표에 추가 할 수 있습니다.
UIViewController *viewController = [navigationController presentedViewController];
if ([viewController isMemberOfClass:[YourViewController class]]) {
[viewController dismissModalViewControllerAnimated:NO];
}
관련 문제
- 1. storyboards와 함께 응용 프로그램 대리인의 모달보기 컨트롤러 제공
- 2. 2 개의 모달보기 컨트롤러 닫기
- 3. 사용자 정의 segue가있는 모달보기 컨트롤러 닫기
- 4. 모달보기 컨트롤러
- 5. 응용 프로그램 대리인의 기본 스토리 보드보기 컨트롤러 무시
- 6. 여러 개의 모달보기 닫기
- 7. 응용 프로그램 대리인의 스토리 보드보기 컨트롤러가 있습니까?
- 8. 모달보기 컨트롤러 전환
- 9. 푸시/현재 모달보기 컨트롤러
- 10. 모달보기 컨트롤러 크기
- 11. TabBar 앱 모달보기 컨트롤러
- 12. 응용 프로그램 닫기 문제
- 13. 응용 프로그램 닫기
- 14. 닫기 Windows 응용 프로그램
- 15. 응용 프로그램 강제 닫기
- 16. 닫기 응용 프로그램
- 17. 오류시 응용 프로그램 닫기
- 18. 응용 프로그램 내에서 iPhone 응용 프로그램 닫기
- 19. 닫기 모든 응용 프로그램 닫기 X Winform
- 20. ipad 응용 프로그램 시작시 모달보기 표시
- 21. 모달보기 컨트롤러가 표시되지 않는 응용 프로그램
- 22. 여러 개의 모달보기 전환 충돌 응용 프로그램
- 23. 모달보기 컨트롤러 해제 메모리 해제하기
- 24. 모달보기 컨트롤러 해제시 이상한 행동
- 25. iPhone - 원활하게 표시 2 연속 모달보기 컨트롤러
- 26. 응용 프로그램 시작시 응용 프로그램 대리인 (즉, 응용 프로그램 대리자)에서 다른보기 컨트롤러 클래스를로드하는 방법
- 27. C# 응용 프로그램 닫기 문제
- 28. WiX를 사용하여 응용 프로그램 닫기
- 29. 닫기 HTML5 버전 응용 프로그램
- 30. android에서 전체 응용 프로그램 닫기
AppDelegate는 분명히 호스팅보기 컨트롤러가 누구인지 알아야합니다. 그러나, 나는 그 후 약간 혼란스러워진다. 나는 여전히 Objective-C를 배우고 있는데, 'appDelegate "callDismissOnMeIfFaceBookFails"에 ivar을 정의하고이 상황에있을 때 설정하십시오. 그렇지 않으면 nil로 설정하십시오.' 간단한 예를 제공 할 수있는 기회가 있습니까? 지금까지 정말 도와 주셔서 감사합니다. –
정말 고마워요! 나는이 일을 줄 것이며 내가 어떻게 일어나는지 알려줄거야. –
완벽하게 작동합니다! 정말 고맙습니다! –