设置Id属性,标记是哪个cell

@property (nonatomic,assign)NSInteger Id;

设置一个普通状态和选中状态图片不同的按钮

  _choose = [[UIButton alloc]init];
[_choose setImage:[UIImage imageNamed:@"about_未勾选"] forState:UIControlStateNormal];
[_choose setImage:[UIImage imageNamed:@"about_勾选"] forState:UIControlStateSelected];
[_choose addTarget:self action:@selector(choosePressed:) forControlEvents:UIControlEventTouchUpInside];
[self.contentView addSubview:_choose];
- (void)layoutSubviews {
_choose.frame = CGRectMake(, +wei_tiao, , );
}

设置一个可调整选中或者为选中的方法

- (void)setChecked:(BOOL)checked {
if (checked) {
_choose.selected = YES;
}else {
_choose.selected = NO;
}
}

cell上按钮的单击事件

/**
* 选择勾选
*
* @param sender 按钮
*/
- (void)choosePressed:(UIButton *)sender {
sender.selected = YES;
if (_chooseBlock) {
_chooseBlock(self.Id);
}
}

设置一个全局变量来判定点了哪一个cell

    NSInteger _cellIndex;

tableView代理:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ShippingAddressCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.Id = indexPath.row;
if (_cellIndex == indexPath.row) {
[cell setChecked:YES];
}else {
[cell setChecked:NO];
}
[cell setChooseBlock:^(NSInteger index) {
_cellIndex = index;
[_tableView reloadData];
}];
return cell;
}

效果图:

补:使用了block作为属性回调

1.申明block属性

@property (copy, nonatomic) void(^chooseBlock)(NSInteger index);

2.在本类里面调用

 if (_chooseBlock) {
_chooseBlock(self.Id);
}

3.使用block属性:

  [cell setChooseBlock:^(NSInteger index) {
_cellIndex = index;
[_tableView reloadData];
}];

UITbaleView上按钮的单选的更多相关文章

  1. [SAP ABAP开发技术总结]选择屏幕——按钮、单选复选框

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. iOS-UITableView-处理cell上按钮事件(弹出警示框,页面跳转等)

    一. 目的: 实现UITableViewCell上按钮点击事件可以进行页面跳转. 二. 实现方法: 1. 用协议的方式的实现. 2. 需要自定义UITableViewCell. 三. 代码部分. ce ...

  3. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例

    IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...

  4. 主窗体上按钮jig画图时,CAD得不到焦点的问题

    主窗体上按钮jig画图时,CAD得不到焦点的问题    按钮不要用 Click 事件,用 MouseDown 事件, 可完美解决该问题 1.试过CAD窗体获得焦点,不顶用 2.试用用命令行去执行,可行 ...

  5. 使用 CSS 去掉 iPhone 网页上按钮的超大圆角以及文本框圆角默认样式

    使用 iPhone 上的浏览器去浏览网页的时候,按钮总是显示超大圆角且颜色由上而下渐变的样式,显得超级恶心,而且文本框也会有一定的圆角,但是我们自己定义 border-radius 也没有效果,经过搜 ...

  6. 使用 CSS 去掉 iPhone 网页上按钮的超大圆角默认样式

    使用 iPhone 上的浏览器去浏览网页的时候,按钮总是显示超大圆角的样式,显得超级恶心,但是我们自己定义 border-radius 为 0 也无法去除这个圆角,经过搜索发现这是 webikt 内核 ...

  7. Android——点击对话框上按钮不关闭对话框

    有时候我没可能需要在点击按钮进行一些检测,但是并不想关闭次对话框(系统默认点击任何一个按钮则关闭对话框),处理方法如下:在点击事件下添加如下代码: try { Field field = dialog ...

  8. iOS11中navigationBar上 按钮图片设置frame无效 不受约束 产生错位问题 解决

    问题描述: 正常样式: 在iOS 11 iPhone X上显示效果: 观察顶部navBar上的左侧按钮  在ios 11 上  这个按钮的图片不受设置的尺寸约束,按其真实大小展示,造成图片错位,影响界 ...

  9. 获取cell上按钮事件

    原由:点击cell上的按钮,无法获取button对应的cell位置 //获取按钮上层控件,也就是cell本身 AccountCell *cell= (AccountCell *)[按钮名称 super ...

随机推荐

  1. 说明一下JNI 与AIDL

    代码在评论中. JNI: 为什么需要JNI: 因为android是由[JAVA & C/C++]组成.Java运行在Dalvik虚拟机中. 没有办法直接访问底层硬件.底层HW相关目前技术一般都 ...

  2. Objective-C 内存管理原则

    内存管理方针 用于内存管理的基本模型采用引用计数的环境之中提供的组合方法中定义在NSObject协议和标准方法的命名约定.NSObject类也定义了一个方法:dealloc,当调用一个对象时自动回收, ...

  3. Menu MenuItem

    Menu & MenuItem learning note Menu MenuItem MSDN Sample Code <Menu Grid.Row="0" Hor ...

  4. C#设计模式之装饰者模式(Decorator Pattern)

    1.概述 装饰者模式,英文名叫做Decorator Pattern.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 2 ...

  5. 编译QT时出现lib/libQtGui.so: undefined reference to `ts_read_raw'的解决办法

    lib/libQtGui.so: undefined reference to `ts_read_raw' /lib/libQtGui.so: undefined reference to `ts_o ...

  6. Ubuntu 12.04 Desktop使用XAMPP

    Ubuntu 12.04 Desktop安装XAMPP Ubuntu 12.04 Desktop配置XAMPP Ubuntu 12.04 Desktop使用XAMPP 1/打开GUI界面的管理工具 终 ...

  7. UISegmentedControl swift

    // // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...

  8. cocos2dx中如何从一张图片中切割一部分显示成小图片

    1.通常我们拿到的资源中,通常都是许多张小图片压缩到一张图片里了,我们如何在使用的时候把它切割出来呢? 2.例如我们要把上面这张图片按组分隔开来 CCSprite* newGameNormal = C ...

  9. C++(MFC)编程中遇到的的一些函数

    memset void memset( void dest, int c, size_t count ); dest: Pointer to destination c: Character to s ...

  10. windows和linux环境下制作U盘启动盘

    新笔记本上,要装xp的系统,100%会破坏原有的Linux系统,因为安装xp的时候会自动覆盖硬盘的主引导扇区,这个扇区一旦被重写,那么原有的linux根本就启动不了. 要想玩linux和xp双系统,一 ...