为啥 UITableView 自定义单元格的第一个单元格总是在 Xcode 中的动作事件上被调用两次
Posted
技术标签:
【中文标题】为啥 UITableView 自定义单元格的第一个单元格总是在 Xcode 中的动作事件上被调用两次【英文标题】:Why a first cell of UITableView custom cell is always called twice on action events in Xcode为什么 UITableView 自定义单元格的第一个单元格总是在 Xcode 中的动作事件上被调用两次 【发布时间】:2020-04-23 10:47:12 【问题描述】:我有一个关于 xcode 上 UITableView 的自定义单元格的问题。
我有两个类,CustomCell 和 ViewController。
我的代码很简单。
ViewController 从 cellForRowAtIndexPath 函数创建两个 CustomCell 行,并为每行 CustomCell 中的切换按钮分配标签 (0,1)。 (第一个单元格的开关按钮标签:0,第二个:1)
但是每当我单击切换按钮时,只会调用第一个单元格两次。第二个单元运行良好。
此外,第一个单元格称为两个标签。
当我点击第一个单元格的切换按钮时,
日志:“第一个开关按钮被点击”
日志:“第二个开关按钮被点击”
当我点击第二个单元格的切换按钮时,
日志:“第二个开关按钮被点击”
我需要你的帮助。谢谢。
- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
static NSString *cellIdentifier = @"certCell";
CertCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
cell = [[CertCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
switch (indexPath.row)
case 0:
cell.switchButton.tag = 0;
break;
case 1:
cell.switchButton.tag = 1;
break;
default:
break;
return cell;
我通过CustomCell.m
上的操作连接了开关按钮
【问题讨论】:
请分享您的 cellForRowAtIndexPath 方法的代码 嗯,您可能还想发布您的 CertCustomCell 实现。 CertCustomCell 有简单的代码。 SwitchButton 动作,它有一个由 UIswitch 投射的对象。而 switch(object.tag) case 0 : log "first switch button is taped", case 1: log "secondswitch button is taped" 你的 cellForRowAtIndexPath 看起来不错。问题出在其他地方。 你有没有在case 0
后面加上break
声明
【参考方案1】:
"当我点击第一个单元格的切换按钮时,
日志:“第一个开关按钮被点击”
Log : "second switch button is taped"
有时很难找出错误在哪里,只需添加更多断点即可。
【讨论】:
以上是关于为啥 UITableView 自定义单元格的第一个单元格总是在 Xcode 中的动作事件上被调用两次的主要内容,如果未能解决你的问题,请参考以下文章
带有包含自定义单元格的 UITableView 的 UISearchBar => 空白单元格
带有单个自定义单元格的 UITableView? (苹果手机)