为啥 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

如何区分具有相同自定义单元格的两个 UITableView

带有包含自定义单元格的 UITableView 的 UISearchBar => 空白单元格

带有单个自定义单元格的 UITableView? (苹果手机)

UITableView 中自定义单元格的 UITapGestureRecognizer

如何从自定义 UITableview 中检索有关选择单元格的数据