2014-09-22 7 views
0

내 사용자 지정 UITableViewCell에 UISwitch 요소를 삽입했는데 내 UITable에 100 개 이상의 셀이 있습니다.ios swift - 왜 내가 UISwitch를 켜고 다른 UISwitchs를 동시에 켜는 이유는 무엇입니까?

UITable에서 켜고 끄는 여러 개의 UISwitch를 표시합니다.

하지만 이상한 것을 발견했습니다.

첫 번째 UISwitch를 누르면 13 번째, 26 번째, 38 번째, 51 번째 ... UISwitch가 동시에 상태를 변경합니다.

어떤 섹션이든 관계없이 하나의 UISwitch 상태를 변경하고 다른 UISwitch가 변경됩니다.

변경된 UISwitch의 간격은 11, 12, 11, 12, 11, 12 ............ 요소입니다.

나는 13 번째 UISwitch를 끄고 1, 26 번째, 38 번째 ..... UISwitch는 OFF로 변경됩니다.

나는 UISwitch 대신 Segmented Control을 적용하려고했는데, 나는 그 요소들과 동일한 행동을 취한다.

이 코드를 내 ViewController에 작성합니다.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 

     let cell : CardListCell = tableView.dequeueReusableCellWithIdentifier("RandomCardCell") as CardListCell 
     var person = cardArray1[indexPath.item] 
     cell.setCell(person.cardName, leaderName: person.leaderName, cardNo: person.cardNo, groupName: "") 
     cell.countDelegate = self 
     //this is my delegate claimed in the Cell, and implemented in the View Controller 

     return cell 
} 

내 셀에 사용자 지정 셀의 값을 설정하는 함수를 만듭니다.

func setCell(cardName: String, leaderName: String, cardNo: Int, groupName: String) 
{ 
    self.cardNameLabel.text = cardName 
    self.leaderNameLabel.text = leaderName 
    self.cardNo = cardNo 
    self.groupName = groupName 
} 

나는 지금 UISwitch 동작에서 아무 것도하지 않았습니다.

@IBAction func switchAction(sender: AnyObject) { 

} 

내 맞춤 셀을 설정할 때 어떤 것이 빠지니 ??

단지 하나를 탭하고 싶습니다. 단 하나의 UISwitch 만 변경되며, 변경되지는 않습니다.

답변

0

cellForRowAtIndexPath에서 스위치를 반환하기 전에 스위치를 셀에 설정하거나 해제해야합니다. 이 기능을 켜고 tableView.dequeueReusableCellWithIdentifier이 반환 한 셀을 사용하는 경우 이전 셀을 다시 사용할 때 캐시 된 값을 가져옵니다.

+0

스위치 요소가 포함 된 셀을 반환하기 전에 탭 결과를 확인하고 모든 스위치 상태를 설정해야한다는 의미입니다. 권리? 적어도이 방법으로이 문제를 해결합니다. –

+0

예. 일반적으로'person'에게'selected'와 같은 Bool 속성을주고 탭했을 때 true 또는 false로 설정 한 다음 셀을 반환하기 전에 그것을 사용합니다. –

+0

정말 고마워요.^___ ^ –