问题标签 [reuseidentifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3528 浏览

ios - 如何强制刷新重用的 collectionview 单元格?

问题

我使用了多个 UICollectionViews,每个 UICollectionViews 在 UITableView 中占据一个单元格,如下图所示:

在此处输入图像描述

dequeueReusableCellWithReuseIdentifier每个 Table View Cell 都包含一个 CollectionView,它使用相同的 nib 标识符创建单元格PlayerCell

问题是当用户向下滚动时,传入的集合视图单元格调collectionView:cellForItemAtIndexPath用以填充单元格。它重用了已消失的最顶层集合视图中的单元格,并且鉴于每个集合视图中最左侧面的索引路径相同(“0”),它不会刷新集合视图单元格中的面。

如何强制单元格刷新面部,我应该在哪里拨打这个电话?

代码摘录:


0 投票
1 回答
173 浏览

ios - UICollectionView 重新排序和更改选定项

我目前面临一个问题,当collectionView我的项目滚动离开屏幕并切换选定的单元格时,我会更改项目的顺序。目前它们被组织成垂直滚动(并排有两个项目):

在此处输入图像描述

这是我的- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath方法:

didSelectItemAtIndexPath:

didDeselectItemAtIndexPath:

如果有人能发现为什么会这样,我将不胜感激!

0 投票
1 回答
1029 浏览

swift - UICollectionView 重用标识符在 sizeForItemAtIndexPath - swift

我有以下代码,它将集合视图放入一列或两列,具体取决于屏幕的大小:

我想修改这个,所以高度取决于reuseIdentifier。我使用了两个 - 设置如下:

如何获取当前单元格的重用标识符,以便我可以根据它是什么类型的单元格来更改高度?

0 投票
1 回答
201 浏览

ios - 解码后如何恢复 UICollectionViewCell 中的绑定

我有一个UICollectionViewCell. 单元在情节提要中以视觉方式设计,具有许多组件,并且这些组件使用情节提要绑定到 Swift 子类中的变量。

Swift 类只是提供了从数据源检索到的 dat 填充组件的逻辑。

例如:

数据源做通常的事情:

我最初只实现了包含“未实现”断言的解码/编码方法,但很明显框架偶尔会编码和解码类。我在不保存组件的情况下实现了虚拟编码/解码方法,导致在访问组件时出现 nil 值的可预测问题。

所以看来我要么需要对子UICollectionViewCell类中的所有控件逐一实现编码和解码,要么必须找到更好的方法。

这似乎是在浪费时间,因为我实际上并不需要(我不认为)保存组件的内容,因为它们无论如何都会被子类重用:我将覆盖组件内容将来自数据源的值。

显然,所有控件都在情节提要中定义。我可以在 init 方法中从情节提要中手动按名称获取它们,但这似乎同样乏味,并且使控件和变量的图形链接变得多余。

有没有更好的办法?

我可以说“恢复连接”或类似的话吗?

编辑:

在发布问题和添加赏金之间的某个地方,问题停止发生。我现在注意到我的组件的 encode 方法没有被调用。所以出于某种原因,框架决定序列化我的对象并反序列化它们,但现在不是。因此问题没有发生,我无法提供堆栈跟踪。

可以想象,XCode 的一些更新已经解决了这个问题,或者它可能是其他问题。

我显然仍然担心某处潜伏着一些错误。

0 投票
0 回答
800 浏览

ios - 重用 UITableViewCell 中的 AVPlayerLayer

我有在单元格中播放视频的逻辑。

每次您在单元格中播放并快速移动滚动条时,播放器都会再次出现。(因为dequeueReusableCellWithIdentifier)。

我想到保存单元格的部分和行,并询问为什么无论何时cellForRowAtIndexPath激活以显示图层。->layer.hidden = NO;

同样在没有积极结果的糟糕尝试中,当单元格执行以下操作时,隐藏层会消失:

我什至尝试在其他功能中支持我:

尽管进行了所有尝试,但它并不稳定(有时有效,有时无效),并且仍然会出现问题,以在不属于的单元格中显示图层。

有人知道解决和/或控制此问题的方法吗?

谢谢你的时间。

已编辑

cellForRowAtIndexPath代码。

已编辑 2

将图层添加到单元格

当用户按下单元格内的按钮时

0 投票
1 回答
125 浏览

ios - 在每个 UITableViewCell 中显示备用视图 - iOS

我有 2 个视图,UITableViewCell我想在每个单元格中显示备用视图(如果前一个单元格的右视图打开,那么下一个单元格的左视图将打开)。

我已经成功实现了它,但是在滚动表格视图时,交替视图无法正常工作;下面的示例图片:

问题图片

我的代码是:

故事板截图:

故事板

我知道问题在于细胞的可重用性,但我搜索了很多但没有运气。请提出解决方案。

谢谢!

0 投票
1 回答
392 浏览

ios - 如果要在标签文本框之间更改,则使用 Swift 自定义单元格

我有一个表格视图,它有一个自定义单元格类,它有 2 个标签和一个文本框

结果集将显示所有行的标签之一(名称),然后有一个 if else 语句来显示第二个标签或文本框。

示例
标签 1 标签 2
乔博客 学生
跑者 [TextBox]
等...

但是,当行滚动离开屏幕时,新行标签 2 不会被刷新并且有旧数据,但是标签 1 是完美的。

示例
标签 1 标签 2
joe blogs Student
road runner Student
等...

下面是代码片段

根据要求 2个屏幕截图

第二个屏幕截图显示了相同的信息,但正如您所看到的,例如,行(知道一切)应该是现金并且有文本框,但是它有一个标签,上面写着“学生”,在第一个屏幕截图上它是正确的(你会看到一些如果你往下看,第二个屏幕截图上的其他人不正确)

我知道这与单元格在滚动出屏幕时被重用有关,但数据没有被刷新,特别是 if/else 语句中的数据没有正确刷新/重绘。

我希望通过我正在努力实现的截图来清除您的问题/评论。如果不是,请发表评论并尝试用不同的方法来展示我的问题。如果您有任何进一步的问题,请告诉我,我会尽快回答

感谢您的任何帮助。

这是第一次加载时的 tableView 并且没有行滚动出屏幕
这是向下滚动然后备份时的 tableView

0 投票
1 回答
46 浏览

ios - 切换单元格大小按钮不更改单元格标识符 UIViewController

我在我的按钮中创建了一些代码来在我的按钮之间切换,cell identifier但显然我需要设置和初始单元格标识符,其中的初始单元格标识符是小图标,所以我将如何删除该单元格标识符并用另一个替换它一次按钮被点击。我目前的代码如下:

GroupsViewController.m

自定义单元格.h

我认为这与我在中设置有关reuseIdentifier- (void)viewDidLoad因此我没有收到任何错误,因此我没有设置错误,所以我真正要求的是一种设置初始重用idzntifier并将其替换为以下内容的方法当我在按钮点击之间切换时。

如果有人能指出我在每次单击按钮时添加图标图像的正确方向,那也会很有帮助。

当我单击下图所示的按钮时会出现问题,单元格本身会发生变化,但初始单元格标识符保持不变。

在此处输入图像描述

0 投票
1 回答
101 浏览

ios - reloadRowsAtIndexPath 在重用时设置不同的单元格

reloadRowsAtIndexPath当按下单元格中的按钮时,我正在使用重新加载单元格。然后 tableView 代表被调用两次。当我第一次按下按钮时,我的一个子视图被删除了。在第二次按下时,它被恢复。在检查cellForRowAtIndexPath时,我得到了不同地址的单元格。我在第二次单击时将其取回(具有相同地址的单元格)。我怀疑这是单元重用的一些问题。但是,如果我重新加载整个表(使用reloadData),则没有问题。

0 投票
2 回答
3465 浏览

ios - dequeueReusableCellWithIdentifier:forIndexPath: VS dequeueReusableCellWithIdentifier:

我已经阅读了这个问题,并认为我理解这两种方法之间的区别,直到我找到一个奇怪的例子:

设置表格视图单元格的样式为Basic,Identifier 为Storyboard 中的Cell,代码如下:

在此处输入图像描述

很简单,但是当我把tableView:cellForRowAtIndexPath:方法分别改成1、2、3、4种情况时:

情况1:

案例二:

案例3:

案例4:

案例 1、2(不起作用):

在此处输入图像描述

案例 3、4(工作正常):

在此处输入图像描述

如何解释?我认为从另一个角度理解这两种方法确实很有帮助,欢迎任何意见。