내 tableview 셀에 삽입 할 UILabels을 만드는 데 문제가 있습니다. 그들은 벌금을 삽입하고 잘 표시합니다. 문제는 제가 스크롤 할 때 나타납니다. 그 행렬의 순서는 엉뚱한 방향으로 간다. 예를 들어, 처음에는 idLabel의 셀 텍스트가 0> 14에서 순차적으로 이동합니다. 아래로 스크롤 한 후 5, 0, 10, 3 등의 순서로 배열 할 수 있습니다.각 tebleview 셀에 UILabels를 올바르게 삽입하는 방법
왜 이런 일이 발생했는지에 대한 아이디어가 있습니까? 셀 생성이 잘못 된 후 레이블을 업데이트하려는 시도를하고 있습니다.
var idArr: NSMutableArray!
// In init function
self.idArr = NSMutableArray()
for ind in 0...14 {
self.idArr[ind] = ind
}
// Create the tableview cells
internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if cell == nil {
let id = self.idArr[indexPath.row] as Int
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
// Id
let idLabel: UILabel = UILabel(frame: CGRectZero)
idLabel.text = String(id)
idLabel.textColor = UIColor.blackColor()
idLabel.tag = indexPath.row
idLabel.sizeToFit()
idLabel.layer.anchorPoint = CGPointMake(0, 0)
idLabel.layer.position.x = 15
idLabel.layer.position.y = 10
idLabel.textAlignment = NSTextAlignment.Center
cell?.addSubview(idLabel)
}
// Update any labels text string
for obj: AnyObject in cell!.subviews {
if var view = obj as? UILabel {
if view.isKindOfClass(UILabel) {
if view.tag == indexPath.row {
view.text = String(id)
}
}
}
}
// Return the cell
return cell!
}
어떤 도움을 주셔서 감사합니다. 더 이상 나무를 볼 수 없습니다.
태그 검사를 제거하면 모든 셀의 모든 레이블을 현재 셀 인덱스의 값으로 설정합니다. 다시 사용 되더라도이 경우 행에 반드시 0> 14 인덱스가 유지됩니까? 그래서 논리가 작동 할 것이라고 생각했습니다. – PersuitOfPerfection
뷰에 대한 참조없이 하위 뷰를 반복하면 그 모든 셀의 레이블이 ID 문자열로 설정됩니다. 다른 셀은 해당 셀의 하위 뷰를 통해서만 영향을 받으므로 영향을받지 않습니다. 따라서 하위 뷰를 반복하지 않고 뷰를 검색하기 위해 태그를 참조로 사용해야합니다. 코드 업데이트 – bjtitus
좋은 아이디어, 훨씬 좋네요.이게 내 문제를 해결해 줬어. 각 라벨에 개별 태그를 설정하는 것에 대한 혼란은 (더 멋진 업데이트 제안과 함께)이를 버리고있는 것이 었습니다. 정말 고마워! – PersuitOfPerfection