如果在 didSelectItemAtIndexPath: 中调用 cellForItemAtIndexPath: 有啥问题:

Posted

技术标签:

【中文标题】如果在 didSelectItemAtIndexPath: 中调用 cellForItemAtIndexPath: 有啥问题:【英文标题】:What is wrong if cellForItemAtIndexPath: is called in didSelectItemAtIndexPath:如果在 didSelectItemAtIndexPath: 中调用 cellForItemAtIndexPath: 有什么问题: 【发布时间】:2016-02-11 09:22:44 【问题描述】:

我在didSelectItemAtIndexPath: 方法中调用了cellForItemAtIndexPath:。结果是didSelectItemAtIndexPath: 每个单元只被调用一次。所以我可以第一次点击一个单元格,然后我可以点击另一个单元格,但是如果我再次点击第一个单元格,didSelectItemAtIndexPath 将不再被调用(但所有其他“新”单元格)。

现在我不再打电话给cellForItemAtIndexPath:,现在didSelectItemAtIndexPath: 可以正常工作。但是为什么我不允许这样做呢?有什么原因吗?

【问题讨论】:

你到底想做什么? 你应该展示你对cellForRowdidSelect的实现 如果您在 didselectRowAtIndexPath 中获取单元格。你可以通过这种方式得到它CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath]; 您是在调用集合视图方法还是您的委托方法(cellForItemAtIndexPath:collectionView:cellForItemAtIndexPath:)? @RahulVyas:我尝试将单元格用于弹出框的直通视图。因此我需要一个由数据源生成的UIView 对象。 【参考方案1】:

集合视图正在为您缓存单元格的实例,当您在索引路径上创建单元格时,您可以将它们出列。集合视图正在对您执行此操作时发生的情况做出一些假设,因此,如果您开始对同一索引路径中的单元格发出多个请求,就会发生奇怪的事情。有时这会导致视觉问题,有时会导致交互问题。

如果你想在指定的索引路径获取单元格,你应该直接询问集合视图而不是使用你自己的委托方法,这会给你屏幕上现有的单元格而不是一个新的单元格。

【讨论】:

以上是关于如果在 didSelectItemAtIndexPath: 中调用 cellForItemAtIndexPath: 有啥问题:的主要内容,如果未能解决你的问题,请参考以下文章

在 Python Django 中,我想运行这两个语句,如果 else 是如果电子邮件显示它或者如果用户名显示它 [重复]

如果在 Jquery 加载页面时在网格中禁用了所有复选框,则如果没有选中复选框并禁用按钮,则发出警报

在一个可执行文件中使用 iPhone OS 3.0 功能(如果可用)和 2.1 功能(如果不可用)

如果存在,如何更新文档,如果在 mongodb 中不存在,如何将其插入?

如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1 [重复]

如果request.form中的request.method =='POST'和'sub':在flask中不起作用:如果条件没有执行