2012-01-16 2 views
0

방금 ​​전에 inAppSettings 킷을 구현했습니다. 내 목표는 내 기본보기를로드 한 다음 오른쪽에 "설정"이라는 탐색 모음 단추 항목을 추가하는 것이 었습니다. 사용자가 설정 버튼을 누르면 설정 한 번들로 이동하여 원하는 웹 사이트를 선택할 수있는 설정 번들을 만든 다음 다시 눌러 기본보기를 다시로드합니다. 그러면 웹보기가 새 URL로 다시로드됩니다.환경 설정에서 값 읽기

나는 방금 위에서 설명한 모든 것을 구현했지만 일단 설정이 설정 내에서 이루어지고 사용자가 다시 누르면 (기본보기로 돌아 가기 위해 설정보기가 취소됨) 앱이 다운되고 아무 생각도 없습니다. 왜. 내 코드가 아래에 있으며 왜 이런 일이 일어나는 지 아는 사람이라면 대단히 감사하겠습니다. 크래시 발생 후 앱을 다시 실행하면 크래시되기 전에 선택한 설정에 따라 웹 사이트가 올바르게로드됩니다.

P. 사용자가 선택할 수있는 옵션은 Google, stackoverflow입니다.

오류 메시지 : 인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 : '- [다가오는 settingsViewControllerDidEnd :] : 인식 할 수없는 선택 예를 0x281c70로 전송'사전에

감사합니다

- (IASKAppSettingsViewController*)appSettingsViewController { 
    if (!appSettingsViewController) { 
     appSettingsViewController = [[IASKAppSettingsViewController alloc] initWithNibName:@"IASKAppSettingsView" bundle:nil]; 
     appSettingsViewController.delegate = self; 
    } 

    return appSettingsViewController; 
} 

-(IBAction)selectSettings { 
    UINavigationController *aNavController = [[UINavigationController alloc] initWithRootViewController:self.appSettingsViewController]; 
    //[viewController setShowCreditsFooter:NO]; // Uncomment to not display InAppSettingsKit credits for creators. 
    // But we encourage you not to uncomment. Thank you! 
    self.appSettingsViewController.showDoneButton = YES; 
    [self presentModalViewController:aNavController animated:YES]; 
    [aNavController release]; 
} 

-(NSDictionary *)intialDefaults { 
    NSArray *keys = [[[NSArray alloc] initWithObjects:kPicture, nil] autorelease]; 
    NSArray *values= [[[NSArray alloc] initWithObjects: @"none", nil] autorelease]; 
    return [[[NSDictionary alloc] initWithObjects: values forKeys: keys] autorelease]; 
} 

-(void)setValuesFromPreferences { 
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults registerDefaults:[self intialDefaults]]; 
    NSString *picturePreference= [userDefaults stringForKey:kPicture]; 

    if([picturePreference isEqualToString:@"google"]) {    
     [self getUpcoming:@"http://www.google.ca"]; 
    } else 
    if ([picturePreference isEqualToString:@"stackoverflow"]) { 
     [self getUpcoming:@"http://www.stackoverflow.com"]; 
    } else { 
     [self getUpcoming:@"http://www.yahoo.com"]; 
    } 
} 

-(void)getUpcoming:(id) hello { 
    NSURL *url= [NSURL URLWithString:hello]; 
    NSURLRequest *requestURL= [NSURLRequest requestWithURL:url]; 
    [web loadRequest:requestURL]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    web.hidden=NO; 
    [spinner stopAnimating]; 
    [load_message dismissWithClickedButtonIndex:0 animated:TRUE]; 
    pic1.hidden=YES; 
} 

-(void) loadMethod { 
    load_message = [[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil]; 

    spinner= [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.center = CGPointMake(135.0, 60.0); 

    [load_message addSubview:spinner]; 
    [load_message show]; 
    [spinner startAnimating]; 
    [self performSelector:@selector(setValuesFromPreferences) withObject:nil afterDelay:0.0]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    UIBarButtonItem *settingButton= [[UIBarButtonItem alloc] 
           initWithTitle:@"Settings" 
           style:UIBarButtonItemStyleBordered 
           target:self 
           action:@selector(selectSettings)]; 

    self.navigationItem.rightBarButtonItem = settingButton; 
    web.hidden=YES; 
    pic1.hidden=NO; 
} 

- (void) viewDidAppear:(BOOL)animated { 
    [self loadMethod]; 
} 
+1

TL; DR 좀 더 쉽게 질문에 답변 할 수 있도록 관련없는 코드를자를 수 있습니까? – Costique

답변

1

마 당신은 InAppSettingKit 델리게이트를 구현합니까? 이것을 현재 수업에 추가하십시오

- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender 
{ 
    // dismiss the view here 
    [self dismissModalViewControllerAnimated:YES]; 
    // do whatever you need to do 
} 
+0

좋은 전화! 일했다. 정말 고맙습니다 – Teddy13

관련 문제