- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个表格 View 和一个自定义单元格。该单元格包含 3 个按钮(复选框类型)。在按钮上单击我需要更改的相应按钮文本(选中/取消选中)。我做到了这一点,但是当我单击顶部单元格上的第一个按钮并向下滚动时,底部的新单元格也有此复选标记,当我滚动回顶部时,复选标记移至下一个单元格..如何解决这个问题? ?
代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *strCellIdentifier = @"RemoteCell";
RemoteCustomCell *cell = (RemoteCustomCell*)[tableView ![dequeueReusableCell][2]WithIdentifier:strCellIdentifier];
if (cell == nil) {
cell = [[RemoteCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCellIdentifier];
}
else {
cell = [cell initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCellIdentifier];
}
[cell.btnCheck1 addTarget:self action:@selector(CheckButton1_Click:) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}
- (void)CheckButton1_Click:(UIButton*)sender
{
RemoteControllCustomCell *clickedCell = (RemoteControllCustomCell *)[[sender superview] superview];
if(clickedCell.btnCheck1.selected)
{
[clickedCell.btnCheck1 setTitle:@"O" forState:UIControlStateNormal];
clickedCell.btnCheck1.selected = NO;
}
else
{
[clickedCell.btnCheck1 setTitle:@"X" forState:UIControlStateSelected];
clickedCell.btnCheck1.selected = YES;
}
}
截图:
最佳答案
在您的 RemoteCustomCell.m 文件中您应该实现
- (void)prepareForReuse
{
[super prepareForReuse];
cell.btnCheck1.selected = NO;
}
这样每个被重用的单元格都会将它的 btnCheck1.selected 值设置为 NO,当你在 cellForRowAtIndexPath
中加载你的单元格时,它只会在单元格可见并且你将其设置为那个。
但是将所有值存储在 NSMutableArray 中是关键。没有仅将您的值存储在单元格中这样的事情,它们会在无法预见的基础上被重用。将您的值添加到数组并使用 [myArray objectAtIndex:indexPath.row];
在单元格中打开这些值。
一个例子:
viewDidLoad 中的某处
NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:@"1", @"0", @"1", @"1", nil];
在您的cellForRowAtIndexPath
BOOL yesOrNo = [[myArray objectAtIndex:indexPath.row] boolValue];
然后将您的 button.selected 设置为 bool 值。
关于ios - TableView 滚动/dequeueReusableCell 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007028/
根据官方文档,有两种方法可以从tableView的队列中获取可重用的cell。一个是 dequeueReusableCell(withIdentifier:for:),另一个是 dequeueReus
如您所知,如果不以某种方式重置tableViewCells,则在上下滚动后可能会错误显示。在网上搜索但没有找到满意的答案后,我想知道该怎么做。 我正在使用一个带有可重复使用的标识符的prototype
无法理解 UITableview 对“dequeueReusableCell”方法的调用。 UITableview 中的 dequeue 过程是如何发生的?我们是获得可重复使用的电池还是总是获得新电池
我正在创建一个类似于 bbc 应用程序的 iOS 应用程序- 我有一个表格 View ,有两个部分- 第一部分包含包含 ScrollView 宽图像的单元格- 第二部分包含可扩展单元格,其中包含 Sc
我有一个 tableView 是这样设置的: func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSInd
我在一个列表中使用了一个dequeueReusableCell,单元格中有4个UILabel。下面有截图。 凡是有“-”字头的标签,都是红色的,但翻了几页,数字就乱七八糟了。想知道是否有办法避免这种情
我有一个 Collection View ,我正在为单元格使用一个自定义类。每个单元格都有两个 TextView ,chapterTitleTextView 和 chapterBodyTextView
我是 iOS 编程领域的新手,我最近在网上看到了一些实现的代码示例,例如: functableView(_ tableView: UITableView, cellForRowAt indexPath
我在 Swift 上使用表格和单元格时遇到问题。 我创建了一个简单的 UITableViewController,其中包含两部分静态单元格。 回顾一下: 1 个表格 View 2 个部分 4 个单元格
我有一个数组,我将其显示为 dequeueReusableCell,我想在单元格旁边显示适当的图像。我的图像与位于 Assets 中的数组中的项目同名。 如何在 dequeueReusable 单元格
我正在使用自动填充实现搜索。我有 UITextField 和 UITableView。当用户更改文本字段中的文本时,我从服务器加载新数据并将其显示在表格 View 中。 结果的数量是固定的(5 个或更
好的,情况如下: 我有一个 Collection View ,在 cellForRow 中,我使用 dequeueReusableCell 来重用单元格。在每个单元格上,我都有一个自定义 UIView
当我们越过特定数量的行时,我想在自定义单元格中隐藏一些元素。我添加了比可见行更多的行,因为我需要滚动到没有弹跳效果的最后一行。但是现在我有更多的单元格,我不需要行 > 13 之后的单元格。 我尝试用
不断收到此错误: 'Editor placeholder in source file' 在 tableView.dequeueReusableCell 行上,不知道哪里出了问题。请帮助如何摆脱这个错
我现在有一个表格 View ,它被设置为像 Netflix 或 Spotify 侧 ScrollView 一样工作。为此,我向每个单独的表格单元格添加了一个 ScrollView ,该表格单元格包含列
我有一个数组,我为每个数组项创建了一个单独的 vc,tableView.dequeueReusableCell 显示错误的 vc。我读到这是因为该单元格是可重复使用的,并且它保留了先前选择的数组中的数
我有一个非常简单的 UIScrollView,其中包含一些内容(许多 subview )。此 ScrollView 用于显示用户发布的一些帖子(图片+文本)。其中一个 View 实际上是作者的图像,它
我正在尝试使用 UITableView 制作列表并收到错误消息: [UITableView] 没有成员“dequeueReusableCell” 我创建了一个带有原型(prototype)单元格的表
在 viewDidLoad 中,我像这样注册单元格: let cellIdentifier = "Cell" override func viewDidLoad() { super.viewD
我们已经设置了我们的 tableviewSource 和一个 tableview,但是在滚动大量单元格时,数据出现在错误的单元格中并且选择状态被应用于多个单元格时遇到了问题。 表格单元格根据 n+1
我是一名优秀的程序员,十分优秀!