2012-10-05 4 views
1

처음으로 앱을 열 때 설정 창을 한 번만 열고 싶습니다. 그런 다음이 설정 창이 더 이상 표시되지 않고 앱의 기본보기가 표시됩니다.설정 창이 한 번만 표시됩니다.

Storyboard에는 하나의 초기 ViewController 만 있기 때문에이 문제를 어떻게 해결할 수 있을지 모르겠다. 두 개의 ViewController (설정이있는 ViewController 및 기본 View가있는 다른 ViewController)가 필요하기 때문에이 문제를 해결할 수 있을지 모르겠다.

두 ViewController 중에서 선택할 수 있습니까?

감사합니다.

답변

1

나는 이것을하는 가장 좋은 방법은 사용자 기본값을 사용하는 것입니다 - 기본값을 등록하고, setBool : TRUE forKey : @ "NeverOpened"와 같은 것을 말한 다음 그 값을 확인하십시오. 이것이 사실이라면 메인보기 컨트롤러가 설정 컨트롤러를 모달로 표시하게하고, 해제 될 때 "NeverOpened"키의 값을 false로 설정하십시오. 다음에 앱이 열리면 NeverOpened가 false가되고 설정 컨트롤러가 표시되지 않습니다.

0

메인보기 컨트롤러의 viewDidLoad: 메소드는 first-app-start를 확인하고, 그렇다면 설정 컨트롤러를 애니메이션없이 푸시합니다.

0

문제는 두 부분으로 나눌 수 있습니다. 먼저 사용자가 이전에 응용 프로그램을 실행했는지 확인하려면 사용자가 응용 프로그램을 실행하는 모든 시간에 걸쳐 지속적으로 무언가를 쿼리해야합니다. 작은 데이터 비트의 경우 기본적으로 사전 인 NSUserDefaults를 사용할 수 있습니다. NSUserDefaults를 쿼리 할 때 해당 키에 대한 개체가 없으면 NSUserDefaults는 nil을 반환합니다. 이를 이용하여 "hasRunKey"와 같은 키를 쿼리 할 수 ​​있습니다. nil을 반환하면 이전에 사용자가 앱을 실행하지 않았으므로 hasRunKey에 대한 객체를 설정해야 나중에는 nil을 얻지 못합니다. 설정이 컨트롤러를 볼 표시하는 두 번째 문제를 들어

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"hasRunKey"]) { 
    [[NSUserDefaults standardUserDefaults] setObject: [NSNumber numberWithBool:YES] forKey:@"hasRunKey"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    // Present the settings view controller -- see explanation below. 
    [self performSegueWithIdentifier:@"My Identifier" sender:self]; 
} else { 
    // Do what you normally do. 
} 

는, 당신은 MySettingsViewController 클래스의 일종으로 새 파일과 서브 클래스의 UIViewController를 추가해야합니다. 그런 다음 스토리 보드에서 사이드 패널의 UIViewController 객체를 드래그합니다. 해당 뷰 컨트롤러의 ID 관리자에서 방금 만든 MySettingsViewController 클래스를 설정하십시오. 관련 장소는 다음 이미지를 참조하십시오 : https://www.evernote.com/shard/s230/sh/ac134774-530f-4649-b3a2-e46b8d712c78/0352134cc8fab7241d97292f4d6ff464).

첫 번째보기 컨트롤러를 선택하고 Ctrl 키를 누른 상태에서 MySettingsViewController로 드래그하여 둘 사이의 구획을 만듭니다. 스토리 보드에서 만든 segue를 클릭하고 속성 검사기 창을 사용하여 식별자를 지정하십시오. 이 시점에서 뷰 컨트롤러를 표시 할 방법을 선택할 수도 있습니다. 나는 당신의 목적을 위해 모달을 추천한다.

니콜라이 (Nikolai)가 권장했듯이 첫 번째보기 컨트롤러의 viewDidLoad 메서드는이 코드에 적합한 장소입니다.

예 : 폴 헤거 티 (Paul Hegerty)의 아이튠즈 (iTunes) U는 iOS 개발에 관한 강연을합니다. 스토리 보드 사용과 그 사이에서의 segueing 같은 기본적인 것들을 다루고 있습니다.

관련 문제