2011-02-28 4 views
0

사용자가 처음으로 내 앱을 열어 기본 기능에 대해 알리기 위해 UIalert를하고 싶지만 앱을 열거 나 홈 화면을 다시로드 할 때마다 표시하지 않으려합니다. 나는 다른 애플 리케이션에서 이것을 보았지만 그것에 대해 갈 가장 좋은 방법이 무엇인지 모릅니다. 누군가가 이것에 올바른 방향으로 나를 가리킬 수 있다면 그것은 인정 될 것이다.한 번만 UIAlert?

+2

확인 [이] (http://stackoverflow.com/questions/308832/iphone-the

이 내가 내 응용 프로그램에서 그것을 할 방법입니다 -quickest-easy-way-to-detect-first-launch) 아웃. –

답변

2

스틱이 당신에 앱에 위임 에서 - (무효) 아래 applicationDidFinishLaunching : (UIApplication ) 응용 프로그램 방법

BOOL hasRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FirstRun"]; 
if (!hasRunBefore) { 

    UIAlertView *firstRun = [[UIAlertView alloc] initWithTitle:@"Virgin" message:@"Hello World!!" delegate:nil cancelButtonTitle:@"Done" otherButtonTitles:nil]; 
    [firstRun show]; 
    [firstRun release]; 


    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstRun"]; 
} 
else if (hasRunBefore) { 

//can do some else if run before 

} 

기본적으로이 무엇 NSUserDefaults의 핵심 "FirstRun"에 대한 검사가 유사하다 버전 번호 등으로 수정 될 수 있습니다. 예를 들어 각 업데이트 후에 새로운 알림을 원한다면 말하십시오. 그런 다음 키가 다른 (! hasRunBefore)이 없는지 검사하고 존재하지 않으면 (이전에 실행 된 적이없는 경우) UIAlertView를 만든 다음 해당 키에 대해 YES를 설정합니다 (프로세스에서 해당 케이트를 생성 함).

1

이전에 앱을 시작한 적이 있다면 "[NSUserDefaults standardUserDefaults]"를 사용하여 부울을 작성하십시오.

+0

나는 좀 새로운 편이야. 당신이 저에게 모범을 보여줄 수 있다면 그것은 정말로 나를 도와 줄 것입니다. 걱정하지 않으면. 도와 주셔서 감사합니다. – HenryGale

1

I 내 메인 화면의 viewDidLoad 메소드에서 NSUserDefaults를 사용하십시오. 따라서 앱이 시작되고 기본 화면이로드 될 때마다 사용자의 첫 번째 시간을 확인합니다. 다음

- (void)viewDidLoad { 
BOOL tempBOOL = [[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenOpeningAlert"]; 
     if (!tempBOOL) { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome To My App" message:@"This app will ... First you need to ..." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
     } 
     [super viewDidLoad]; 
} 

과 :

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
     Edit *editViewController = [[[Edit alloc] initWithNibName:@"Edit" bundle:nil]retain]; 
     [self.navigationController presentModalViewController:editViewController animated:YES]; 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenOpeningAlert"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
     [editViewController release]; 
}