2011-04-28 1 views
0

내 iPhone 앱이 핵심 데이터베이스를 업데이트해야하는 경우 내 iPhone 앱이로드되는 동안 사용자에게 MBProgressHUD보기를 표시하여 작업 중이며 걸리지 않았 음을 알고 있습니다. 데이터 저장소가 이전되는 동안 어떻게 시작 화면에 MBProgressHUD를 추가 할 수 있습니까? 일반적으로 UIViewController 뷰에 첨부 할 수 있지만 스플래시 화면은 응용 프로그램 대리인 아래에 있습니다. 가능한가요?코어 데이터 저장소가 새 버전으로 마이그레이션되는 동안 iPhone 앱의 시작 화면에 MBProgressHUD를 표시 하시겠습니까?

답변

4

아니요 스플래시 화면 위에 고정되어있어 오버레이 할 수 없습니다.

그러나 앱이로드 될 때까지 약간의 시간 동안 집중적 인 프로세스를 지연시킨 다음 진행률 표시기로 가짜 시작 화면을 만들고 백그라운드 스레드에서 집중적 인 작업을 계속할 수 있습니다.

+0

이렇게하는 방법이 있습니까? – Jason

+0

이전에 해본 적이 없으므로 구체적으로 설명 할 수는 없습니다. 그러나, 나는 단지 당신이 Alex가 말했던 것을해야한다고 가정한다. 즉,'-applicationDidFinishLaunching :'이 호출 될 때까지 기다려야하고, 그 메소드 (위임자에 있음)에서 뷰 컨트롤러를 생성하고 모달 뷰로 표시 한 다음 시작한다. 뒷 배경 스레드. 끝난 후에는 델리게이트에 콜백을 보내고, 델리게이트 메서드에서는로드 뷰를 제거합니다. 따라서 기본적으로 대리자 메서드에서보기를 추가하고 백그라운드 프로세스가 완료되면이를 닫습니다. –

0

당신은과 같이, 응용 프로그램 위임 헤더 파일에 #define 매크로를 만들 (또는 "전역"헤더) 수 : 응용 프로그램 위임 속성에 액세스 할 때

다음
#define MyAppDelegate [[UIApplication sharedApplication] delegate] 

, 당신이 할 수있는

MyAppDelegate.property = foo; 
[[MyAppDelegate property] bar]; 

이 앱의 삶에 어떤 시점에서 진행 뷰를 관리하는 데 도움이 될 수 있도록 응용 프로그램에서이 어디처럼 당신은 헤더 (또는 전역 헤더를) 가져 왔습니다.

편집

sudo는 RF RM은 당신이 시작 화면 동안 일을 할 수없는 올바른 것입니다. 하지만 앱 대리인의 -applicationDidFinishLaunching: 메소드에서 진행보기를 시작한 다음 백그라운드 스레드에서 작업을 시작할 수 있습니다. 백그라운드 스레드의 작업이 끝나면 콜백을 사용하여 진행률보기를 닫습니다.

관련 문제