Ios Swift Tableview获取特定单元格不工作
我正在尝试清除tableview的特定单元格。我知道要实现这一点,就在这里使用以下代码:Ios Swift Tableview获取特定单元格不工作,ios,swift,uitableview,Ios,Swift,Uitableview,我正在尝试清除tableview的特定单元格。我知道要实现这一点,就在这里使用以下代码: let index = IndexPath(row: 1, section: 0) if let cell = self.tableView.cellForRow(at: index) as? SomeTableViewCell { // do sth }else { print("Row 1 not found") } 但问题是,当我将这种方法用于像Iphone7、8、X这样的大
let index = IndexPath(row: 1, section: 0)
if let cell = self.tableView.cellForRow(at: index) as? SomeTableViewCell {
// do sth
}else {
print("Row 1 not found")
}
但问题是,当我将这种方法用于像Iphone7、8、X这样的大屏幕手机时。。。它可以正常工作,但当我在iphone5、6或更小的屏幕上测试到第1行不可见时,它会打印出“第1行未找到”似乎你自己已经几乎找到了问题 与TableView一样,iOS重用单元格以保留内存并为用户提供无缝平滑的滚动体验 当单元格从屏幕上消失时,iOS会重复使用这些单元格。ie:向下滚动时,初始单元格开始被重用。在较大的屏幕上,这需要一段时间,因为它可能一次显示20个单元格,而在较小的屏幕上(一次)显示10个屏幕 如果要永久删除此单元格,则应从备份表视图(数据源)的模型中删除相应的数据对象,并重新加载表视图 如果不想永久删除此单元格,则只能在表格实际需要绘制时重置它。这可以在datasource方法中完成
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
//Do your Resetting code here
}
看来你自己也差不多找到问题了 与TableView一样,iOS重用单元格以保留内存并为用户提供无缝平滑的滚动体验 当单元格从屏幕上消失时,iOS会重复使用这些单元格。ie:向下滚动时,初始单元格开始被重用。在较大的屏幕上,这需要一段时间,因为它可能一次显示20个单元格,而在较小的屏幕上(一次)显示10个屏幕 如果要永久删除此单元格,则应从备份表视图(数据源)的模型中删除相应的数据对象,并重新加载表视图 如果不想永久删除此单元格,则只能在表格实际需要绘制时重置它。这可以在datasource方法中完成
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
//Do your Resetting code here
}
你用哪种语言写的这段代码???是否还要从TableView中删除此特定单元格,还是只删除单元格内容?需要澄清…如果该行不可见,则无需执行任何操作。只要更新数据模型(在任何情况下)@Mr.Ahtazaz我在一个函数中编写了这段代码,该函数将在调用Notification.addObserver时调用。我只想更改特定单元格内的内容only@rmaddy哦好的,让我试试。你用哪种语言写的这段代码???是否还要从TableView中删除此特定单元格,还是只删除单元格内容?需要澄清…如果该行不可见,则无需执行任何操作。只要更新数据模型(在任何情况下)@Mr.Ahtazaz我在一个函数中编写了这段代码,该函数将在调用Notification.addObserver时调用。我只想更改特定单元格内的内容only@rmaddy哦好的,让我试试。谢谢你指出这个概念,事实上,我确实理解tableview的流程,但我忘记了我只是使用IF-let概念,我只执行操作,它返回true,这就是为什么它会导致这个bug。但正如@rmaddy所指出的,我应该只清除我的数据,然后该单元将被重新使用。但你的回答确实解释了可能对其他人有帮助的流程。我也会投票支持你的答案。谢谢,太棒了!我很高兴你在@rmaddy的帮助下解决了这个问题。谢谢你指出这个概念,事实上,我确实理解tableview的流程,但我忘记了我只是使用IF-LET概念,我只执行操作,它返回true,这就是为什么它会导致这个bug。但正如@rmaddy所指出的,我应该只清除我的数据,然后该单元将被重新使用。但你的回答确实解释了可能对其他人有帮助的流程。我也会投票支持你的答案。谢谢,太棒了!我很高兴你在@rmaddy的帮助下解决了这个问题。