我有一个应用程序,其中有一个嵌入在ViewController中的tableview,每当我导航到另一个ViewController并导航回表视图时,单元格在滚动时重复。有没有人对如何防止这种情况有任何建议? tableview的当前代码是:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return marathonRaces.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let singleCell: marathonTableViewCell = tableView.dequeueReusableCellWithIdentifier("marathonCell") as! marathonTableViewCell
singleCell.marathonName.text = marathonRaces[indexPath.row]
singleCell.entry.text = "\(entryNumber[indexPath.row])"
singleCell.entries.text = "\(entires[indexPath.row])"
singleCell.length.text = "\(length[indexPath.row])"
return singleCell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = self.marathonsTableView.indexPathForSelectedRow!
let currentCell = marathonsTableView.cellForRowAtIndexPath(indexPath) as! marathonTableViewCell
let marathonEvents = currentCell.marathonName.text
self.performSegueWithIdentifier("marathonDetail", sender: self)
}
我正在使用swift,xcode7,并将其解析为我的后端
viewDidAppear中唯一相关的代码是:
var query = PFQuery(className: “Marathons")
query.orderByAscending("end")
query.findObjectsInBackgroundWithBlock { (marathons, error:NSError?) -> Void in
if(error == nil ){
//success
for marathon in marathons! {
self.marathonRaces
.append(marathon[“marathonName"] as! String)
self.entry.append(marathon[“entryNumber"] as! Int)
self.entries.append(marathon[“entries"] as! Int)
self.length.append(marathon[“length"] as! Int)
}
self.marathonsTableView.reloadData()
}else {
print(error)
}
}
答案 0 :(得分:1)
问题出在您的viewDidAppear
方法中。每次控制器出现时,您都会从后台获取数据,将它们附加到数组并重新加载tableview。例如,将用于获取数据的代码移动到viewDidLoad
,然后重复"重复"应该不见了。
答案 1 :(得分:0)
您是否检查过数据源marathonRaces
是否获得了更多条目?
您可能会在每个后退导航中添加更多条目,如果是这样,请在添加之前添加或删除所有条目。