当前位置:编程学习 > wap >>

cell上的button做单选,自定义的cell,cell为单独的一个类


如图所见,我希望在cell的button上面做单选,复用的是一个cell
cell是我自定义的,在上边加了一个button,所以cell是个单独的类,button的触发事件只能在cell类中实现,所以并不能得到当下点击的cell的index,无法判断是那个cell,无法达到互斥效果
这是我在cell上的button
[self.btnsetBackgroundImage:[UIImage imageNamed:@"没有选中的图片"] forState:UIControlStateNormal];
    [self.btn addTarget:self action:@selector(changeChoose:) forControlEvents:UIControlEventTouchUpInside];
两个button 的backGroundImage都应该是这个[UIImage imageNamed:@"没有选中的图片"] 吧,点击之后变图片

我觉得关键难点就是cell上的button,如果是view上的就好办了,想不出来,希望大家帮忙 --------------------编程问答-------------------- 在cellForRowAtIndexPath里面你可以得到cell里面的button,只要你在自定义的类中把button定义成一个属性,比如:btn
接着在cellForRowAtIndexPath里面,只需要cell.btn就可以得到这个button的指针。这样,你就可以用cell.btn来设置这个button的图片了。
剩下的问题,就是cell的复用问题,在复用的cell中,你要判断哪些该显示成被选的,哪些显示成不选的。  --------------------编程问答-------------------- 至于你说的点击button的响应方法,猜测你肯定想在里面执行一些提示用户安装的代码。我的建议是把这些代码放到didSelectedRowAtIndexPath里。至于button只是用来表示是否选中。也可以换成UIImageView。
一般要用户选择,还是让他点击cell选择还一点,去点击一个那么小的button本来就不是很友好。你觉得呢?

有什么问题,你可以补充。希望能帮到你 --------------------编程问答-------------------- cell中加一个代理方法 点击事件时把cell以及其他参数传给视图控制器,然后视图控制器获得到cell自然就知道是哪个cell了 --------------------编程问答--------------------
引用 2 楼 zxd11617 的回复:
至于你说的点击button的响应方法,猜测你肯定想在里面执行一些提示用户安装的代码。我的建议是把这些代码放到didSelectedRowAtIndexPath里。至于button只是用来表示是否选中。也可以换成UIImageView。
一般要用户选择,还是让他点击cell选择还一点,去点击一个那么小的button本来就不是很友好。你觉得呢?

有什么问题,你可以补充。希望能帮到你


直接对这楼回复吧,一楼也是你的 ,多谢;
现在只是对页面UI进行布局,还没有到功能上的实现,以后会做到功能上的,所以先针对难点了解一下(可能我觉得比较难,嘿嘿),所以现在还不知道要点击cell提示,还是点击button后提示,所以两种都要考虑到,三楼也正好说到了button的处理方法,
看完茅塞顿开,哈哈! --------------------编程问答--------------------
引用 3 楼 ran0809 的回复:
cell中加一个代理方法 点击事件时把cell以及其他参数传给视图控制器,然后视图控制器获得到cell自然就知道是哪个cell了

字虽然少,但是看的明白直观,谢谢 --------------------编程问答--------------------
引用 3 楼 ran0809 的回复:
cell中加一个代理方法 点击事件时把cell以及其他参数传给视图控制器,然后视图控制器获得到cell自然就知道是哪个cell了

问题来了 我在cell类中定义了协议,也设置了代理,为啥就是不调用捏...求指导。。。
cell.h里:@protocol CellDelegate <NSObject>
- (void)ButtonDidSelected:(UIButton *)button;
@end
@property(nonatomic,assign) id<CellDelegate> delegate;

cell.m里:
button的触发方法:-(void)changeChoose:(UIButton *)sender
{    
    if(self.delegate && [self.delegate respondsToSelector:@selector(ButtonDidSelected:)])
    {
        [self.delegate performSelector:@selector(ButtonDidSelected:) withObject:sender];
    }  
}
进不去if里面 --------------------编程问答--------------------
引用 6 楼 u010478901 的回复:
Quote: 引用 3 楼 ran0809 的回复:

cell中加一个代理方法 点击事件时把cell以及其他参数传给视图控制器,然后视图控制器获得到cell自然就知道是哪个cell了

问题来了 我在cell类中定义了协议,也设置了代理,为啥就是不调用捏...求指导。。。
cell.h里:@protocol CellDelegate <NSObject>
- (void)ButtonDidSelected:(UIButton *)button;
@end
@property(nonatomic,assign) id<CellDelegate> delegate;

cell.m里:
button的触发方法:-(void)changeChoose:(UIButton *)sender
{    
    if(self.delegate && [self.delegate respondsToSelector:@selector(ButtonDidSelected:)])
    {
        [self.delegate performSelector:@selector(ButtonDidSelected:) withObject:sender];
    }  
}
进不去if里面


你cell初始化得时候设置delegate属性为视图控制器了吗 --------------------编程问答-------------------- 支付宝支付是会先找你有没有安装ios版本的客户端 有了就跳过去 没有就会直接跳到网页上 不需要你这样来写的.......不信 你可以自己测试一下... --------------------编程问答--------------------
引用 7 楼 ran0809 的回复:
Quote: 引用 6 楼 u010478901 的回复:

Quote: 引用 3 楼 ran0809 的回复:

cell中加一个代理方法 点击事件时把cell以及其他参数传给视图控制器,然后视图控制器获得到cell自然就知道是哪个cell了

问题来了 我在cell类中定义了协议,也设置了代理,为啥就是不调用捏...求指导。。。
cell.h里:@protocol CellDelegate <NSObject>
- (void)ButtonDidSelected:(UIButton *)button;
@end
@property(nonatomic,assign) id<CellDelegate> delegate;

cell.m里:
button的触发方法:-(void)changeChoose:(UIButton *)sender
{    
    if(self.delegate && [self.delegate respondsToSelector:@selector(ButtonDidSelected:)])
    {
        [self.delegate performSelector:@selector(ButtonDidSelected:) withObject:sender];
    }  
}
进不去if里面


你cell初始化得时候设置delegate属性为视图控制器了吗


嗯 明白了 --------------------编程问答--------------------
引用 8 楼 kuqideyupian 的回复:
支付宝支付是会先找你有没有安装ios版本的客户端 有了就跳过去 没有就会直接跳到网页上 不需要你这样来写的.......不信 你可以自己测试一下...


额 确实...谢谢 --------------------编程问答--------------------
引用 10 楼 u010478901 的回复:
Quote: 引用 8 楼 kuqideyupian 的回复:

支付宝支付是会先找你有没有安装ios版本的客户端 有了就跳过去 没有就会直接跳到网页上 不需要你这样来写的.......不信 你可以自己测试一下...


额 确实...谢谢


不客气 嘻嘻 可以结贴给分分了
补充:移动开发 ,  iPhone
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,