如何正确挑选出单元格附件视图

Posted

技术标签:

【中文标题】如何正确挑选出单元格附件视图【英文标题】:how to properly single out cell accessory view 【发布时间】:2021-02-19 00:47:37 【问题描述】:

所以我的目标是正确分离细胞配件。当段控件位于第一个索引时,这是我的第一组单元格。附件类型是一个正常的披露指标。

现在,当我切换段索引的值时,我使用自定义附件视图设置我的单元格。

现在的问题是,当我切换回第一段时,自定义附件视图也会像这样转到前 2 个单元格:

我只是想弄清楚如何防止这种情况发生并保持电池配件正确分开。我将附上我的必要代码。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: Constants.CellDetails.studentDashCell, for: indexPath)
    let cellImage = UIImage(systemName: "checkmark.seal.fill")
    let cellImageView = UIImageView(image: cellImage)
    cellImageView.tintColor = #colorLiteral(red: 0.4666666687, green: 0.7647058964, blue: 0.2666666806, alpha: 1)
    cellImageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    
    
    
    if selectorOfEvents.selectedSegmentIndex == 0 
        cell.textLabel?.font = UIFont(name: Constants.AppFonts.consistentFont, size: 22)
        cell.textLabel?.text = gothereEvents[indexPath.row].eventName
        cell.accessoryType = .disclosureIndicator
     else if selectorOfEvents.selectedSegmentIndex == 1 
        cell.textLabel?.font = UIFont(name: Constants.AppFonts.menuTitleFont, size: 22)
        cell.textLabel?.text = gotherePurchasedEventNames[indexPath.row].purchasedEventName
        cell.accessoryView = cellImageView
        

    
    
    return cell

cellForRowAt() 方法。 ^

 @IBAction func eventsSegmented(_ sender: UISegmentedControl) 
    if sender.selectedSegmentIndex == 0 
        navigationItem.title = "Events"
        tableView.reloadData()

     
     else 
        navigationItem.title = "Purchased Events"
        tableView.reloadData()
    
    

分段控件的IBAction 函数。提前致谢。

【问题讨论】:

感谢您的客气话。 @dfd 【参考方案1】:

我的怀疑是附件视图/类型正在某些出列单元格上得到延续。在这两种情况下,您都应该明确设置 accessoryViewcell.accessoryType 类型:

if selectorOfEvents.selectedSegmentIndex == 0 
        cell.textLabel?.font = UIFont(name: Constants.AppFonts.consistentFont, size: 22)
        cell.textLabel?.text = gothereEvents[indexPath.row].eventName
        cell.accessoryType = .disclosureIndicator
        cell.accessoryView = nil //<-- here
     else if selectorOfEvents.selectedSegmentIndex == 1 
        cell.textLabel?.font = UIFont(name: Constants.AppFonts.menuTitleFont, size: 22)
        cell.textLabel?.text = gotherePurchasedEventNames[indexPath.row].purchasedEventName
        cell.accessoryView = cellImageView
        cell.accessoryType = .none //<-- here
    

【讨论】:

谢谢大佬,效果很好,一直在帮助兄弟。欣赏它。 @jnpdx

以上是关于如何正确挑选出单元格附件视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在单元格渲染后检查表格视图上的复选标记图标(附件视图)?

UITableViewCell,两个单元格都获得了附件视图

带有附件视图的 iOS 8 自调整单元格

引用同一视图的多个 UITableViewCell 单元格附件视图失败

tableview 上的 setediting = true 使单元格附件视图消失?

拆分视图控制器折叠/展开时更新表格单元格附件