2013-07-29 7 views
0

코드에서 UITableViewCell에 UISwitch를 추가하고 대상/동작을 추가했습니다. 문제는 UISwitch가 눌려지면 반대 값으로 움직이기 시작하고 구매 한 다음 애니메이션을 멈추고 이전 값으로 돌아갑니다. 그래서 기본적으로 슬라이더가 75 %의 경로를 OFF에서 ON으로 슬라이드 한 다음 OFF로 돌아가므로 전환 할 수 없습니다. 전환 된 후에는 UITableView에 섹션을 추가하고 이것이 왜 작동하지 않는지 알 수 없습니다. 누군가 내 코드에 문제가 있는지 말해 줄 수 있습니까? 여기UISwitch가 값을 변경하지 않습니다.

self.forSaleSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(223.0f, 8.5f, 0.0f, 0.0f)]; 
       [self.forSaleSwitch addTarget:self 
             action:@selector(switchTapped:) 
          forControlEvents:UIControlEventValueChanged]; 
       self.forSaleSwitch.backgroundColor = [UIColor clearColor]; 
       self.currentAnnotation.isHouseForSale = (self.forSaleSwitch.on) ? YES : NO; 

       [cell addSubview:self.forSaleSwitch]; 

그리고 UISwitch을위한 작업입니다 : : 여기

내가 UISwitch를 추가 곳이다

- (void)switchTapped:(id)sender 
{ 
    UISwitch *switcher = (UISwitch *)sender; 
    if (switcher.on) 
    { 
     [switcher setOn:NO animated:YES]; 
     self.currentAnnotation.isHouseForSale = NO; 
     NSLog(@"OFF"); 
    } 
    else 
    { 
     [switcher setOn:YES animated:YES]; 
     self.currentAnnotation.isHouseForSale = YES; 
     NSLog(@"ON"); 
    } 
    [self.tableView reloadData]; 
} 

답변

1

당신은 당신이 새로 테이블보기를 요구하고있는 reloadData 메서드를 호출 할 때 모든 셀을 다시로드하십시오. 스위치의 값을 어딘가에 저장하지 않고 셀을 생성 할 때 스위치의 값을 복원하면 항상 기본 상태 인 NO로 돌아갑니다. 셀은 그 라인 setting.Remove 기본으로 간다 다시로드하고 htat 시간에 다시로드하려는합니다 괜찮아요 코드가 작동으로

+0

reloadData 메서드를 완전히 제거 했으므로 문제가 해결되지 않았습니다. –

0

당신은 제대로 settiing있다, 문제는

[self.tableView reloadData]; 

입니다 일부 다른 변수에 저장하기 위해 상태를 유지하여 스위치 상태를 관리하고 설정할 때 사용합니다. cellForRowAtIndexpath

+0

코드 줄을 제거했지만 여전히 작동하지 않습니다. –