UITableViewCell上的按钮点击事件处理

voc与txt互转 voc2txt # coding:utf-8 from __future__ import print_function import os import random import glob import xml.etree.ElementTree as ET def xml_reader(filename): """ Parse a PASCAL VOC xml file """ tree = ET.parse(filename) size = tree.find('siz 阅读详情

今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题。我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧。


1、第一种方式给Button加上tag值


这里分为两种:一种是直接在原生的UITableViewCell上添加UIButton按钮,然后给UIButton设置tag值,然后在控制器里的方法里通过取数据,做界面跳转等。还是举个例子吧,省的回忆半天。



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    static NSString *identifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (cell == nil) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
     User *user = _users[indexPath.row];
    cell.user = user;
    //拍照button
    UIButton  *photographButton = [UIButton buttonWithType:UIButtonTypeCustom];
    photographButton.frame = CGRectMake(221 , 10, 100, 44);
    [photographButton setImage:[UIImage imageNamed:@"camera.png"] forState:UIControlStateNormal];
    [photographButton addTarget:self action:@selector(photographButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    photographButton.tag = indexPath.row;
    [cell.contentView addSubview:photographButton];
    
    return cell;
}







然后在点击事件中取数据,加信息 



- (void)photographButtonClicked:(UIButton *)sender{
     User *user = _users[sender.tag];
    PhotoPickerController *photoPicker = [[PhotoPickerController alloc] init];
    photoPicker.user = user;
    [self.navigationController pushViewController:photoPicker animated:YES];
    
}
以上两个方法都是在同一个控制器中。 


另外一种,自定义了UITableViewCell,那么就在UITableViewCell里添加一个代理方法。



#import <UIKit/UIKit.h>

@protocol TermCellDelegate <NSObject>

- (void)choseTerm:(UIButton *)button;

@end

@interface TermCell : UITableViewCell

@property (retain, nonatomic) IBOutlet UIButton *checkButton;
@property (retain, nonatomic) IBOutlet UILabel *termLabel;

@property (assign, nonatomic) BOOL  isChecked;
@property (assign, nonatomic) id<TermCellDelegate> delegate;

- (IBAction)checkAction:(UIButton *)sender;

@end

#import "TermCell.h"

@implementation TermCell

- (void)awakeFromNib
{
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    if (_isChecked) {
        [_checkButton setBackgroundImage:[UIImage imageNamed:@"task_state_checked"] forState:UIControlStateNormal];
    } else {
        [_checkButton setBackgroundImage:[UIImage imageNamed:@"task_state_unchecked"] forState:UIControlStateNormal];
    }
}

- (void)dealloc {
    [_checkButton release];
    [_termLabel release];
    [super dealloc];
}

- (IBAction)checkAction:(UIButton *)sender {
    if ([_delegate respondsToSelector:@selector(choseTerm:)]) {
        sender.tag = self.tag;
        [_delegate choseTerm:sender];
    }
}

@end
然后再控制器中实现Cell的代理方法即可 



#pragma mark - TermCellDelegate
- (void)choseTerm:(UIButton *)button
{
    _clickIndex = button.tag;
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"确定修改学期吗?" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    [alertView show];
}
当然,这里也可以做界面跳转,取数据依然用button的tag值。 


第二种,是直接在自定义的Cell里面跳转,这种耦合性比较强。思路先是找到button的父控制器,然后做界面跳转或者其他操作。有这样一个工具方法



#import "UIView+Additions.h"

@implementation UIView (Additions)

- (UIViewController *)viewController
{
    UIResponder *next = [self nextResponder];
    do {
        if ([next isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)next;
        }
        
        next = [next nextResponder];
        
    } while (next != nil);
    
    
    return nil;
}
头文件就不写了,很简单的扩展。 



- (void)setWeiboModel:(WeiboModel *)weiboModel
{
    if (_weiboModel != weiboModel) {
        [_weiboModel release];
        _weiboModel = [weiboModel retain];
    }
    
    __block WeiboCell *this = self;
    _userImage.touchBlock = ^{
        NSString *nickName = this.weiboModel.user.screen_name;
        UserViewController *userCtrl = [[UserViewController alloc] init];
        userCtrl.userName = nickName;
        [this.viewController.navigationController pushViewController:userCtrl animated:YES];
        [userCtrl release];
    };
    
}





这里是给Cell赋值model,然后点击事件是用Block实现的。
【数据集6】全球人工不透水面积GAIA(清华数据) 全球人工不透水面GAIA简介及其应用 阅读详情

相关推荐

手把手教你用Switched-Capacitor Converter实现高效DC-DC转换(附常见拓扑对比)

本文详细介绍了开关电容转换器(SC)在高效DC-DC电源设计中的应用,对比了四种常见拓扑结构的优缺点,并提供了损耗分析与效率优化的实战技巧。通过无电感设计,SC转换器在5G模块和可穿戴设备中展现出超高功率密度和微小体积的优势,是电源管理领域的革命性技术。

weixin_30790841的博客 272

自定义Cell上的点击事件两种方法

方法一是代理:这里先忽略,不写! 方法二是Block: 1、在Cell的类中需要定义一个block块的类型变量,用于在ViewController中使用;//创建cell的block块把按钮的tag传到ViewController中 typedef void (^CellBlock) (CCustomTableViewCell * cell, UIButton *button);

Sunny_212319 3446

死区补偿---学习笔记

最近调试中发现,死区补偿对电流谐波和电流带宽影响挺大,于是对死区补偿产生浓厚兴趣,找来几篇文章粗读并做一下笔记。 传统做法 无非就是根据电流方向补偿,假如svpwm计算出的A相理论导通实践为T1,死区时间是Td,则实际导通时间T = T1-Td(when ia >0 ),于是在svpwm计算出的导通时间T1的基础上加上Td。这样经过PWM模块后,实际的导通时间即为T1. 但存在两个难点(个人总结): 1,受电流检测精度影响,尤其是在过零点检测困难。 2,真实的二极管导通需要一定电压,并非..

圆桌骑士的博客 2万+

点击UITableViewCell里的CollectionViewCell进行跳转

结构如图所示,目的是要通过点击嵌在UITableViewCell里的UICollectionViewCell来进行跳转。但是UITableViewCell不是个controller,所以UICollectionViewCell点不出来页面跳转的方法。我的解决办法是获取UITableViewCell所在的controller,然后通过该controller进行页面跳转。1、获取所在的最上层的contr

PigVillage_Solar 2153

Latex | IEEE双栏排版中长公式的排版

IEEE双栏排版中,有时候公式过于长了,过宽,导致单栏排版不下。

qq_43466146的博客 1万+

从零构建EtherCAT从站:SSC工具配置与TwinCAT3 PDO/SDO调试实战

本文详细介绍了从零构建EtherCAT从站的完整流程,重点讲解SSC工具配置与TwinCAT3 PDO/SDO调试实战。通过解析EtherCAT通信机制、PDO与SDO的核心概念,提供SSC工具配置技巧、XML文件生成与校验方法,以及TwinCAT3环境下的调试经验,帮助开发者高效完成EtherCAT从站开发与优化。

weixin_42520573的博客 339

如何通过点击 UICollectionViewCell 跳转至对应的 UIViewController

手指触碰 UICollectionViewCell 但未释放,这属于 Highlight 使用 UITapGestureRecognizer 存在问题 使用 didSelectedItemAt 可以解决问题

iOS 开发 414

手把手教你用P-MOS管搭建双电源自动切换电路(含AO3401选型指南)

本文提供了一份基于P-MOS管AO3401构建高可靠双电源自动切换电路的实战指南。文章详细对比了继电器、理想二极管与MOS管方案的优劣,深入解析了AO3401的关键参数选型,并手把手指导了从原理图设计、PCB布局到上电调试的全过程,旨在帮助硬件工程师和创客以极低成本实现无缝、高效的电源冗余方案。

moss5的博客 1232

UITableView自定义cell上的按钮点击事件

TableView自定义cell上的按钮点击事件处理,介绍两种方法实现,一种是通过代理,另一种是通过属性处理。

人生如戏 戏如人生 7589

6-3 根据派生类写出基类(Java解法)(PTA)

主要是看main函数里调用了什么方法和输出样例,一一对应一下有思路再写就很简单.建议使用IDEA自动生成,可以少写很多代码。

u012137663的博客 1141

【MT7628】固件开发-SDK4320添加MT7612E WiFi驱动操作说明

【MT7628】固件开发-SDK4320添加MT7612E WiFi驱动操作说明

wgl307293845的博客 2079

自定义UITableViewCell 上的多个按钮点击事件处理

自定义UITableViewCell 上的多个按钮点击事件处理

Carry_FeiKer的博客 846

【大数据Java基础-Java基础01】环境搭建(一)Sublime Text3搭建Java编译环境(Windows系统)

1. 首先配置好Java环境变量 我的jdk版本是1.8.0_191,存放目录是C:\Program Files\Java,因此添加以下环境变量 (1)系统变量→新建 JAVA_HOME 变量,变量值为: C:\Program Files\Java\jdk1.8.0_191 (2)系统变量→找到 Path 变量→编辑,末尾加入: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 如果Path变量末尾本身有“;”,则上述路径前面则不需要加“;” (3)系统变量→新建 CL

微信搜:import_bigdata,大数据领域硬核原创作者 552

自定义UITableViewCell上的按钮点击事件处理

http://blog.youkuaiyun.com/u011619283/article/details/43057941 今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题。我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧。 1、第一种方式给Button加上tag值 这里分为两种:一种是直接在原生的UITab

mituan1234567的专栏 474

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IOS--UITableViewCell上的按钮点击事件处理

今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题。我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧。 1、第一种方式给Button加上tag值 这里分为两种:一种是直接在原生的UITableViewCell上添加UIButton按钮,然后给UIButton设置tag值,然后在控制器里的方法里通过取数据,做界面

执迷的博客 1698

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

iOS开发-UI控件:自定义UITableViewCell 上的多个按钮点击事件处理

转自: http://blog.youkuaiyun.com/m372897500/article/details/45099029 简介: 今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题。我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧。 1、第一种方式给Button加上tag值 这里分为两种:一种是直接在原生的UITa

重剑无锋,大巧不工 518

自定义UITableViewCell 上按钮点击事件处理

1、第一种方式给Button加上tag值 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath   {              static NSString *identifier = @"Cel

上孟的专栏 587

iOS Block 处理UITableViewCell上button的点击事件

大家都知道在cell上添加button的话并没有什么难处, 直接添加就是,难处在于怎样处理button的点击事件.   那么怎样处理点击事件呢?在这里通过block的方式来处理cell上的button的点击事件. 前提工作:新建一个工程,  创建一个TableViewController,在cell上添加一个button 这里为了方便起见,使用storyboard建立了一个tableVi

KiuShuo的专栏 3303
上一篇: 简单的textField 应用 逻辑很混乱。
下一篇: OC中属性self.a与_a访问的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值