2013-08-19 1 views
0

내 다른 질문이 모호했기 때문에 이것을 명확하게 만들 것입니다. 하나의 viewController에 대한 테이블 뷰가 있는데, 셀을 선택하면 NSUserDefaults에 숫자가 저장됩니다. 내 주요 viewController에서이 번호를 검색하고이를 사용하여 레이블을 업데이트하려고합니다. 나는 몇 가지 디버깅을했고, 내가 다시있는 tableView 하나에서 내 주요의 ViewController에 갈 때,이 무슨 일에 순서 것으로 나타났습니다 : 2)있는 tableView 세포 탭이 3) 번호가 저장 인식tableView didSelectRow not properly functioning

1) 기본보기로드 NSUserDefaults

주 뷰를로드하여 셀을 클릭하면 주 viewController에서 레이블이 변경되도록 순서를 어떻게 변경합니까? 여기

내 didSelectRow 방법

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSString *pointsPath = [[NSString alloc] initWithFormat:@"totalPoints"]; 
NSString *numberFirst = [[NSString alloc] initWithFormat:@"numberFirst"]; 

int totalPoints = [[NSUserDefaults standardUserDefaults] integerForKey: pointsPath]; 
int number = [[NSUserDefaults standardUserDefaults] integerForKey:numberFirst]; 

if([indexPath row] == 1) 
{ 
    NSLog(@"Selected First row"); 
    if(totalPoints < 10) 
    { 
     if (number != 0) 
     { 
      NSLog(@"Did not add a point, but saved"); 
      [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:numberFirst]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 

     } 
     else if (number == 0) 
     { 
      NSLog(@"Added a Point"); 
      int newPoints = totalPoints + 1; 
      [[NSUserDefaults standardUserDefaults] setInteger:newPoints forKey: pointsPath]; 
      [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:numberFirst]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      int logPoints = [[NSUserDefaults standardUserDefaults]integerForKey:pointsPath]; 
      NSLog(@"Point Count:%i", logPoints); 
     } 


    } 
+0

타겟 개발 플랫폼을보기 위해 코드를 조사해야 함을 의미하는 열악한 토픽 ... –

+0

타겟 개발 플랫폼은 iOS ... Mac Dev에 익숙하지 않지만 왜 그럴 수 있습니까? 중요한 – V2Krazy

+2

당신은 이것을 디버깅하기 위해 무엇을 했습니까 ??? 가장 먼저 할 일은 위의 메소드가 실제로 호출되는지 확인하는 것입니다. 다음으로 예상 데이터가 예상되는 위치에 나타나는지 확인하십시오. (BTW, 하나의 VC에서 다른 VC로 번호를 전달하기 위해 파일을 작성하는 것은 다소 어리 석다.) –

답변

0

사람이 문제를 발견하면 마침내 문제가 발생했습니다 ... 사용자가 셀을 선택하면 모달이 아닌 푸시 세그가되는지 확인해야합니다 ... 너무 실망 스럽습니다. 단순한!!

0

컨트롤러의 뷰가 필요에 따라로드에서 코드입니다. 따라서 viewDidLoad을 유발하는 것은 controller.view을 수행하는 다른 누군가입니다. 이미 뷰 컨트롤러를 컨테이너 뷰로 밀어 넣었거나 그렇지 않으면 뷰 컨트롤러를 제시하기 시작한 경우 해당 에이전트가 담당합니다.

viewDidLoad 및 iOS 5 이하 viewDidUnload은 프로그래밍 방식으로보기의 일부를 만들려는 경우 필요한 후크를 제공하기위한 것입니다.

컨트롤러가 보이지 않는 동안 변경되었을 수있는 설정을 고려하고 있다면, viewWillAppear:을 사용해야합니다. 그것이 당신이 보이지 않는 시각에서 가시적으로 전환 할시기를 결정하는 의도 된 방법입니다.

두 가지간에 완전히 활성화 된 링크를 원할 경우 NSUserDefaultsDidChangeNotification을 수신하고 필요한 경우보기를 업데이트 할 수있는 숫자를 표시하는보기 컨트롤러를 설정해야합니다.

+0

여전히 똑같은 일을합니다. 내 tableViewController에서 뭔가를 호출해야합니까? 여전히 NSUserDefaults를 tableView에서 업데이트하기 전에 메인 뷰 컨트롤러를로드합니다 – V2Krazy

+0

'viewDidLoad'와'viewDidAppear :'에 중단 점을 넣으면 그 원인이 무엇입니까? '... didSelectRowAtIndexPath :'와 관련하여 그것은 어디에서 발생합니까? – Tommy

+0

viewDidLoad는 초기 뷰 컨트롤러이므로 정지하지 않고 행을 선택할 수 없습니다. NSLog는 행을 클릭 할 때, 번호를 저장할 때, 그리고 뷰 컨트롤러가로드 될 때 로깅됩니다. 라벨이 업데이트되지 않도록 모든 항목을 저장하기 전에 기본보기 컨트롤러가로드됩니다. – V2Krazy

관련 문제