Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift Tableview获取特定单元格不工作_Ios_Swift_Uitableview - Fatal编程技术网

Ios Swift 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这样的大

我正在尝试清除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这样的大屏幕手机时。。。它可以正常工作,但当我在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的帮助下解决了这个问题。