如果在 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:
可以正常工作。但是为什么我不允许这样做呢?有什么原因吗?
【问题讨论】:
你到底想做什么? 你应该展示你对cellForRow
和didSelect
的实现
如果您在 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中不起作用:如果条件没有执行