2012-08-30 4 views
1

저는 iOS 개발을 처음 접했고 응용 프로그램을 시작할 때마다 로그인해야하는 응용 프로그램이 있습니다. 응용 프로그램을 다시 시작할 때의 마지막 동작은 마지막으로 열린보기로 돌아가는 것입니다. 이 동작을 원하지만 사용자가 먼저 인증 한 다음 마지막으로 열린보기로 돌아가서 작업을 계속할 수 있도록해야합니다. 다른 응용 프로그램에서이 작업을 수행하는 것을 보았습니다. 누구든지이 구현하는 가장 좋은 방법에 대한 포인터를 줄 수 있습니까?iOS에서 응용 프로그램 이력서에 로그인 대화 상자 표시

+0

왜 사용자가 앱을 다시 열 때마다 재 인증을 받도록 하시겠습니까? – Maz

+0

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html applicationWillBecomeActive 대리자 메소드를 확인하십시오. 또는, 귀하의 응용 프로그램이 활성화 될 때 로그 아웃 할 수 있습니다. – Maz

+0

@Maz - 애플리케이션에 중요한 데이터가 들어 있습니다. – Dennis

답변

3

참조 UIApplicationDelegate 프로토콜 참조가 : http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html

- (void)applicationDidBecomeActive:(UIApplication *)application 

이 방법은 응용 프로그램이 활성 상태로 비활성에서 이동 알려이라고합니다. 이는 사용자 또는 시스템이 응용 프로그램을 시작했기 때문에 발생할 수 있습니다. 응용 프로그램은 일시적으로 응용 프로그램을 비활성 상태로 보낸 중단 (수신 전화 통화 또는 SMS 메시지 등)을 사용자가 무시하도록 선택하면 활성 상태로 되돌아 갈 수 있습니다.

응용 프로그램이 비활성 상태 일 때 일시 중지되었거나 시작되지 않은 작업을 다시 시작하려면이 방법을 사용해야합니다. 예를 들어 타이머를 다시 시작하거나 OpenGL ES 프레임 속도를 조절할 수 있습니다. 응용 프로그램이 백그라운드에서 이전에 있었던 경우이를 사용하여 응용 프로그램의 사용자 인터페이스를 새로 고칠 수도 있습니다.

그리고 로그인/암호를 요청하는 가장 좋은 방법은 여기에 ... UIAlertView를 사용하는 등 대화 imlementation의 샘플 콘텐츠 다운로드 [의 LETE 소스 코드입니다 https://github.com/digdog/DDAlertPrompt ... 당신은 당신의 applicationDidBecomeActive이 뭔가를 삽입해야합니다 :

DDAlertPrompt *loginPrompt = [[DDAlertPrompt alloc] initWithTitle:@"Sign in to Service"  delegate:self cancelButtonTitle:@"Cancel" otherButtonTitle:@"Sign In"]; 
[loginPrompt show]; 
[loginPrompt release]; 
+0

이것이 내가 원하는 것을하기 위해 코드를 넣기를 원하는 곳이지만, 정확히 무엇을해야 하는지를 이해하지 못합니다. 루트 ViewController를 LoginController에 설정할 수는 있지만 사용자의 이전 상태를 잃게됩니다. – Dennis

+0

UIApplicationDelegate 구현을 처리하는 방법을 모르거나 "로그인 대화 상자"를 표시하는 방법을 모르십니까? – Tutankhamen

+0

applicationDidBecomeActive 내부의 현재보기 대신 로그인 대화 상자를 표시하는 방법을 알지 못하고 로그인이 완료되면 사용자가 중단 한 곳에서 계속 진행합니다. 현재 활성 상태 인 뷰 컨트롤러에 대한 참조를 가져 오는 방법이 있습니까? 현재 뷰 컨트롤러에 대한 전역 참조를 직접 관리하는 경우 그 위에 모달 뷰를 표시 할 수 있습니다. 그렇게하는 것이 적절한 방법입니까? – Dennis

관련 문제