2013-10-15 3 views
5

이 사이트의 새로운 브랜드, 여기 아마추어 지식이 아주 좋습니다! 몇 주 전에 나 자신을 가르치기 시작했습니다. 꽤 견고한 아이폰 앱을 가지고 있지만 마지막으로 구현하고 싶은 기능은 다음과 같습니다.iOS 첫 출시 둘러보기 - 앱이 처음 시작될 때 감지하기

'첫 출시 만'가이드 투어를 만듭니다.

내가 알고 싶은 것은; 사용자가 응용 프로그램을 처음 시작하는 경우 버튼을 누르지 않고도 '초기보기 컨트롤러'가 아닌 새로운보기 컨트롤러로 프로그램을 모두 리디렉션 할 수 있습니다.

필자가 이해하는 첫 번째 실행 감지에 대한 자습서를 읽었습니다. Ive는 몇 가지 자습서를 읽고 "performSegueWithIdentifier"를 구현하고 구현하기 위해이 책의 모든 내용을 시도했지만 아무것도 작동하지 않습니다!

아마도 Xcode 5를 사용하고 iOS 7에서 테스트했기 때문에 가능합니다. 누구든지 나를 도울 수 있다면 영원히 감사 할 것입니다! 당신이 [[NSUserDefaults standardDefaults] registerDefaults:]을 사용하는 기본값을 등록하지 않은 경우 해당 키가 존재하지 않는

(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstLaunch"]) { 
    } 
    else { 
     // Place code here 
     self.view.backgroundColor = [UIColor redColor]; 

     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstLaunch"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    }  

    // Do any additional setup after loading the view, typically from a nib. 
} 
+0

무엇을 시도 했습니까? 어쩌면 우리에게 몇 가지 코드를 보여줄 수 있습니다. 당신이 시도하지 않은 것은 어떻게 작동하지 않습니까? 당신이 줄 수있는 세부 사항이 많을수록 우리는 당신을 도울 것입니다. – neilco

+0

내 메인 포스트에 내가 viewcontroller.m 파일에 추가 한 것을 추가했습니다. 그 잘 작동하지만 대체 뷰 컨트롤러를 열려면 "// Place code here"부분에 무엇을 넣을 지 잘 모르겠습니다. – Luke

+0

나는 또한 segue를 만들고 이것을 위의 "// place code here"라는 곳에이 코드를 배치함으로써 코드를 사용하여 프로그램 적으로 푸시하려고 시도했다. [자기 performSegueWithIdentifier : @ "투어"보낸 사람 : 자기]; "Tour"라는 내 segue – Luke

답변

6

, 당신이 전화를 처음 [[NSUserDefaults standardDefaults] boolForKey:@"FirstLaunch"] 당신은 NO를 받게됩니다. ,

여기
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasPerformedFirstLaunch"]) { 
     // On first launch, this block will execute 

     // Set the "hasPerformedFirstLaunch" key so this block won't execute again 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasPerformedFirstLaunch"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
    else { 
     // On subsequent launches, this block will execute 
    }  

    // Do any additional setup after loading the view, typically from a nib. 
} 
+0

코드에 비교적 익숙하지 않아 도움이된다면 큰 도움이됩니다.이제 첫 번째 출시를 인식하고 그 정보를 저장하는 방법을 설정 했으므로 프로그래밍 방식으로 다른보기 컨트롤러에 세그먼트를 수행하는 방법은 무엇입니까? 나는 'performseguewithidentifier'를 사용하려고했지만 아무 일도 일어나지 않습니다! – Luke

+0

스토리 보드를 많이 사용하지는 않았으므로 시도하지는 않았지만,'viewWillAppear :'에서 첫 번째 체크를하고 segue를 수행하는 것이 더 나을 것입니다. 'performSegueWithIdentifier :'가 작동해야합니다. – neilco

+0

viewWillAppear 및 viewDidLoad에서 in을 사용해 보았지만 아무 일도 발생하지 않았습니다. 아무것도 발동하지 않습니다! – Luke

1

은 가이드 투어 소스 https://github.com/sofienazzouz/Guided-Tour입니다 :

나는 같은 hasPerformedFirstLaunch로, 다음은 처음 실행 순서를 그 NO을 반환하는 경우 확인 및 실행의 문제, 더 의미 키 이름을 사용하는 것을 선호 당신이 당신의 대리인에서 가이드 투어를 호출 할 경우 지금 당신은이

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

//// initialize your initialViewController here however you want 
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"knewOrRecentUser"]) { 
     self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.initialViewController]; 
    } else { 
     [[NSUserDefaults standardUserDefaults] setObject:@"old" forKey:@"knewOrRecentUser"]; 
     GuidedTourViewController *guideTour = [[GuidedTourViewController alloc] init]; 
     self.navigationController = [[UINavigationController alloc] initWithRootViewController:guideTour]; 
    } 
[self.window setRootViewController:self.navigationController]; 
} 
1

neilco과 같이 호출한다

제공 한 것은 작동하지만 앱을 처음 실행하는 동안 화면을 빨간색 (또는 원하는 색상)으로 설정하는 코드를 생략했습니다.

이제는 이것이별로 좋아 보이지 않을 수도 있지만 초보자가 벤처를 통해 할 때 가능한 한 많은 정보를 제공하여 우리가 무슨 일이 일어나고 있는지 이해할 수 있도록하는 것이 가장 좋습니다. 네, 저도 그렇습니다! < < = 초보

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasPerformedFirstLaunch"]) { 
     // On first launch, this block will execute 
     // Place code here 
     self.view.backgroundColor = [UIColor redColor]; 

     // Set the "hasPerformedFirstLaunch" key so this block won't execute again 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasPerformedFirstLaunch"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
    else { 
     // On subsequent launches, this block will execute 
    } 

    // Do any additional setup after loading the view, typically from a nib. 
} 
관련 문제