首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

选中状态已清除deleteItemsAtIndexPaths上UICollectionViewCell中的UIButton

在UICollectionViewCell中删除选中状态的UIButton,可以通过以下步骤实现:

  1. 首先,你需要在UICollectionViewCell的类中创建一个UIButton的实例变量,并将其添加到cell的contentView上。你可以使用UICollectionViewCell的initWithFrame方法来初始化UIButton,并设置其样式、位置和其他属性。
  2. 在UICollectionViewDelegate的方法中,当用户选择或取消选择一个cell时,你可以通过设置UIButton的选中状态来更新UI。你可以使用UICollectionViewDelegate的didSelectItemAtIndexPath和didDeselectItemAtIndexPath方法来监听cell的选择状态变化。
  3. 在UICollectionViewCell的类中,你需要实现一个方法来处理UIButton的点击事件。你可以使用addTarget方法将UIButton与该方法关联起来,并在方法中更新UIButton的选中状态。
  4. 当用户点击UIButton时,你可以通过调用UICollectionView的reloadItemsAtIndexPaths方法来刷新cell的UI。这将触发UICollectionViewDelegate的方法,从而更新UIButton的选中状态。

以下是一个示例代码,演示了如何在UICollectionViewCell中删除选中状态的UIButton:

代码语言:swift
复制
import UIKit

class CustomCollectionViewCell: UICollectionViewCell {
    var button: UIButton!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        // 创建UIButton实例
        button = UIButton(type: .system)
        button.frame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)
        button.setTitle("Button", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        
        // 将UIButton添加到cell的contentView上
        contentView.addSubview(button)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    @objc func buttonTapped() {
        // 处理UIButton的点击事件
        button.isSelected = !button.isSelected
        
        // 刷新cell的UI
        if let collectionView = superview as? UICollectionView,
           let indexPath = collectionView.indexPath(for: self) {
            collectionView.reloadItems(at: [indexPath])
        }
    }
}

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
    var collectionView: UICollectionView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建UICollectionView实例
        let layout = UICollectionViewFlowLayout()
        collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.register(CustomCollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
        view.addSubview(collectionView)
    }
    
    // UICollectionViewDataSource方法
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 10
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CustomCollectionViewCell
        
        // 根据UIButton的选中状态更新UI
        if cell.button.isSelected {
            cell.button.backgroundColor = .green
        } else {
            cell.button.backgroundColor = .red
        }
        
        return cell
    }
    
    // UICollectionViewDelegate方法
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        // 处理cell的选择事件
    }
    
    func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
        // 处理cell的取消选择事件
    }
}

这是一个简单的示例,演示了如何在UICollectionViewCell中删除选中状态的UIButton。你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

中的cell特性外,CollectionView中的Item大小和位置可以自由定义 4、通过layout布局回调的代理方法,可以动态的定制每个item的大小和collection的大体布局属性 5、更加强大一点...        在了解UICollectionView的更多属性前,我们先来使用其进行一个最简单的流布局试试看,在controller的viewDidLoad中添加如下代码:     //创建一个layout...,因此这里统一了从复用池中获取cell的方法,没有再提供可以返回nil的方式,并且在UICollectionView的回调代理中,只能使用从复用池中获取cell的方式进行cell的返回,其他方式会崩溃,...) BOOL allowsSelection; //设置是否允许多选 默认no @property (nonatomic) BOOL allowsMultipleSelection; //获取所有选中的...item的位置信息 - (nullable NSArray *)indexPathsForSelectedItems;  //设置选中某一item,并使视图滑动到相应位置

3.1K20
  • Swift-低仿搜狐新闻标签页效果

    在ViewController里自定义了两个数组,我的频道(myChannels)和更多频道(moreChannels) 在点击+跳转到频道管理页面的点击方法里面有一个回调方法,即:将选中的频道、以及自定义后的频道回传到此页面...,在将选中的Item移动到目标的Item上的时候,我的方法处理的不是太好。...现在还存在的一些不尽人意的地方: 长按之后是变成编辑状态,不像《头条》或者《搜狐》那样长按之后变成编辑也可以继续拖动。 选中Item没有放大的效果,确实影响用户体验。...我的频道里面第一个Item本意上我是不希望他可以被移动的,但是如果将其它的Item移动到第一个位置依然可以,背离了我的初衷。...仔细观察了一下,《头条》或者《搜狐》的更多频道里,如果将我的频道中的Item移动到更多频道里,《搜狐》只是放在更多频道里面的最后一个位置,《头条》是放在第一个的位置,并没有放哪里都行,我突然又感觉我自己的又有点多此一举了

    1.9K40

    【IOS开发基础系列】UICollectionView专题

    • cell的选中状态     • 可以支持长按后的菜单         关于用户交互,UICollectionView也做了改进。...cell         状态控制要比以前灵活一些,对应的高亮和选中状态分别由highlighted和selected两个属性表示。...,用作cell平时的背景     • 再其上是selectedBackgroundView,是cell被选中时的背景     • 最后是一个contentView,自定义内容应被加在这个view上         ...这次Apple给我们带来的好康是被选中cell的自动变化,所有的cell中的子view,也包括contentView中的子view,在当cell被选中时,会自动去查找view是否有被选中状态下的改变。...重用         UICollectionViewCell其实只实例化了能应付一屏显示范围的对象实例,而在cellForItemAtIndexPath方法中重复更新此实例的业务数据来达到显示不同Cell

    90830

    【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    普通 : UI 控件的默认状态; -- 高亮 : UI 控件突出显示, 处于高亮状态; 手放在按钮上处于高亮状态; -- 禁用 : UI 控件关闭后, 处于禁用状态; 禁用状态的控件不可操作, 禁用操作在...Interface Builder 取消 Enable 复选框; -- 选中 : 用于标识控件已启用 或 被选中, 选中状态可以不断持续, 高亮状态只在 按下才显示; (4) UI 控件状态 UI...文本, 图片, 格式; -- Default : 默认状态; -- Highlighted : 用户碰触时的高亮状态; -- Selected : 被选中时的状态; -- Disabled : 禁用状态...; 为不同状态的 UIButton 设置样式 :  -- "setTittle : forState :" 方法 : UIButton 不同状态 设置不同的标题; -- "setTittleColor...: forState :" 方法 : UIButton 不同状态设置不同的标题颜色; -- "setTittleShadowColor : forState :" 方法 : UIButton 不同状态

    6.9K20

    跟iOS UI的捉迷藏(如何获取用户点击行为的控件title)

    1.如何获取用户控件的点击行为 事实上,由于获取的“所见所得”点击view行为,所以,思路上应该是对uiview或者及其子类得某个事件方法hook到,这样触发点击(广义上是触摸)行为后,可以根据发送的事件确定点击的...UI控件类型,进一步获取对应title 事实上,具体流程比较复杂,如下图: 这里有篇文章讲的比较详细: https://www.jianshu.com/p/ae6466d3e89e 里面不仅讲了整个流程...先从简单的开始 一阶获取的控件:UIButton 响应的uiview是UIButton,即用户点击的是按钮,则立马获取(即一阶获取) NSString * title = [[button titleLabel...4层,再向下找1层,才能找到ULTableViewLabel,所以为五阶获取 平行获取的控件:UINavigationController的backButton 这是个比较有意思的空间,点击UICollectionViewCell...这样就无法确定是哪个UISegment 换条路 通过打印UISegmentedControl的方法列表,我们找到了一个selectedSegmentIndex 这个对应的内容为最后一个被选中的UISegment

    1.4K10

    当iOS遇见UI

    当然,像UIButton之类的按钮控件,除了在活动模式下激发方法之外,它并没有太多其他的功能。...普通:普通状态是所有控件的默认状态。 高亮:当UI控件需要突出显示时,它处于高亮状态。对按钮来说,当用户手指放在按钮上时,它才处于高亮状态。 禁用:当UI控件被关闭时,它处于禁用状态。...禁用状态的UI控件是不可操作的,如果要禁用某个控件,则可以在Interface Builder中取消选中Enabled复选框,或将控件的enabled属性设为NO。...选中:选中状态通常用于标识该控件已启用或被选中。很多时候,选中状态与高亮状态比较相似,但UI控件可以在用户不再使用它时继续保持选中状态。...假如向界面设计文件中添加了一个按钮(UIButton),由于UIButton继承了UIControl基类,因此,可以在Xcode的属性检查器面板中看到如图1所示的UIControl的属性设置面板。

    75010

    iOS流布局UICollectionView系列二——UICollectionView的代理方法

    iOS流布局UICollectionView系列二——UICollectionView的代理方法 一、引言         在上一篇博客中,介绍了最基本的UICollectionView的使用和其中我们常用的属性和方法...,也介绍了瀑布流布局的过程与思路,这篇博客是上一篇的补充,来讨论关于UICollectionView的代理方法的使用。...,所有方法都是可选实现: 是否允许某个Item的高亮,返回NO,则不能进入高亮状态 - (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath...:(NSIndexPath *)indexPath; 结束高亮状态时触发的方法 - (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath...collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath; 长按菜单中可以触发一下类复制粘贴的方法

    2.1K20

    【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    中显示的是一个正方形的 界面 , 需要将其设置为 一个 手机形状的 UI 界面 ; 2.设置成 4.7 寸屏幕大小 : ① 选中 ViewController 图标 , ② 设置 右侧 的 属性查看器...)generateView { } ---- ( 2 ) 修改按钮文字 ( ① 双击控件 | ② 修改 Tittle 属性 ) 修改按钮文字 : 1.方法1 : 点击选中 UIButton 控件, 然后再右侧的属性查看器中的...设置 文字 , 这里需要根据不同的状态设置显示的文字 , 这里只设置 UIControlStateNormal 状态的文字 [button setTitle:@"生成按钮" forState:UIControlStateNormal...代码区域 , 在弹出的对话框中 输入方法名称 , 选择控件类型 , 选择触发操作 , 选择传入的参数 即可生成点击方法 ; // 上一张 图片 - (IBAction)lastImage:(UIButton...) UIButton 启用 禁用 ( ① enabled 属性 YES NO ) UIButton 的启用 禁用 : 1.enabled 属性 ( 可视化修改 ) : 在 UIButton 的 属性查看器中

    4K40

    iOS_自定义UITabBarController标签视图控制器

    ,即点击状态的): @interface MyTabBarController () //之前选中的按钮 @property(nonatomic, retain) UIButton *selectedBtn...; @end 然后开始写自己想要的东西了,在viewDidLoad中: (1)删除继承父类而来的tabBar,自定义自己想要的视图,其frame为原来tabBar的frame。...:) forControlEvents:UIControlEventTouchUpInside]; } } (4)然后实现按钮的点击事件clickBtn:实现按钮和其下面标题 选择和未选择状态的切换...;也需要实现视图的跳转: #pragma mark -- 自定义tabBar按钮的点击事件 -(void)clickBtn:(UIButton *)sender { //设置上一个按钮...viewWithTag:self.selectedBtn.tag + 100]; titleFormer.textColor = [UIColor grayColor]; //设置选中状态

    55830

    【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

    : 选中界面中的 View Controller 元素, 然后去 属性面板 中对应的 类面板, 其中的 Class 属性就是设置的其对应的 代码类, 这里是 ViewController.h 和 ViewController.m..., 拖到制定的控件处, 这样 ViewController.h 中的属性与 Main.storyboard 中的控件建立起了关联; ① 属性左侧的圆圈图示 : 第一张是鼠标没有移动到圆圈上, 第二章是鼠标移动到了圆圈上...Config 属性中可以配置 五种状态, 其中的 Highlighted 状态就是按钮按下的状态, 每个状态都可以设置一套单独的 Tittle Background 等属性, 如下图的属性列表;...: 为按钮 的 Default 和 Highlighted 两个状态设置不同的图片 ; 3.绑定方法 : 将两个按钮同时绑定到同一个方法上 ; 4.设置 tag : 给 两个按钮分别设置 tag...标签 , 根据 tag 执行不同的逻辑 ; 控件关联的方法 , 是否传入 UIButton 控件 , 在于是否需要获取 按钮 相关资源 , ---- ( 6 ) 关闭自动布局 ( ① 选中 ViewController

    5K30

    iOS小经验:UITableView&UICollectionView设置单元格的默认选中状态

    场景需求 一个表格视图(或者宫格视图)中,当一个单元格被选中时设置彩色样式,选中其它单元格时设置灰色样式。 2. 一个思路 通过实现选中和非选择的代理,以在适当的时机进行UI更新操作。 3....UITableView 3.1 通过屏幕点击改变的选中状态回调给代理 //选中 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath...// animate between regular and selected state 注意的是: 这种方法改变cell的选中状态时,当通过屏幕点击选中其它cell的时候,UITableView并不会执行...4.3 补充:代码设置选中状态 执行方法的主体:cell对象 - (void)setSelected:(BOOL)selected; 注意的是: 类似的,这种方法改变cell的选中状态时,当屏幕选中其它...手动执行代理 上述两张方案的区别在于,设置选中状态完后,屏幕点击其它cell时,一个执行原cell的didDeselect方法,一个不执行。

    3.6K50

    iOS 无侵入埋点组件总结

    结合AOP的核心思想:将应用程序中的业务逻辑同对其提供支持的通用服务进行分离,最后采用了第2种方案。...这样确实能够唯一的表示此 view 了,但是有一个缺点:它的可读性很差。因此在此基础上又增加了每个节点的名称,节点的名称由当前节点的 view 的类名来表示。同时在开头都添加了一个页面名称作为标识。...,再由 UIApplication 调用其 sendAction:to:fromSender:forEvent: 方法来将消息分发到指定的 target 上。...这个方法对 UIControl 及继承 UIControl 的子类对象有效,如:UIButton、UISlider 等。...和 UIViewController 生命周期埋点不同的是,一个类中可能有许多不同的 UIButton 子类,相同的 UIButton 子类在不同的视图中的埋点也要区分出来,所以我们通过 NSStringFromClass

    3K31
    领券