[ios]关于tablelist里的每个按钮点击时传值的问题讨论
来源:互联网 发布:淘宝上没有京东 编辑:程序博客网 时间:2024/05/29 14:07
ios中按钮的事件要想传值,很麻烦,相信有玩过的人都了解.怎么传一个值如此麻烦呢.别的语言,随便传,传数组,对象都可以.不就是一个函数的参数嘛.而ios不一样.
如果页面是一个按钮,只传一值,一个对象什么的,那就认了吧,只在.h文件 字义一个公共变量或者对象然后把它的值设好,然后在按钮的事件中直接这个值,就当是传了.
如果要传两个,三个值,,那也认了吧,,还是定义公共变量.
好像这么说,这招倒是通哦.都可以传值.于是日常的使用中,也就接受了.但是有一种情况.
如果按钮在tablelist里,然后每个cell都有一个按钮呢.然后每一个按钮的点击事件都要传当前的cell的这个对象过去处理呢..这怎么办,
方法还是可以一样,定一个NSMutableDictionary字典数组mapValues 变量在.h文件里.那如何让这个数组和cell里的button绑定呢. 有一个很巧的方法,就是结合button的tag来用.
在cell初始时button时,顺便给这个button定义一个唯一的tag值,最好是用对象的某一个id, 如:Member.id,,然后再把这个id作为字典的key再用它绑定一个对象.
[mapValuessetObject:Member forKey:Member.id];
这样初始化好后,,,点击按钮的事件里就可以用,取值通过字典数组里取,也就简单了.
-(void)buttonAction:(id)sender{ int mid = ((UIButton *)sender).tag; member *code = [mapValues objectForKey:[NSString stringWithFormat:@"%d",mid]];
}
再补充一下,最近又想到了两种方法,那就是对button进行扩展属性。
//方法一,用继续UIButton类,新建两个文件,里成新增它的属性和方法都行。//这个简单,就不举例。
//方法二,用运行时的objc_setAssociatedObject,objc_getAssociatedObject和objc_removeAssociatedObjects
方法二举例如下:
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 140, 40)]; button.backgroundColor = [UIColor redColor]; [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; objc_setAssociatedObject(button, @"key", @[@"12",@"123"], OBJC_ASSOCIATION_RETAIN_NONATOMIC); button = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 140, 40)]; button.backgroundColor = [UIColor greenColor]; [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; objc_setAssociatedObject(button, @"key", @[@"45",@"678"], OBJC_ASSOCIATION_RETAIN_NONATOMIC);- (void)buttonAction:(UIButton *)sender{ NSLog(@"%@", objc_getAssociatedObject(sender, @"key")); //objc_removeAssociatedObjects(sender);//不用了,就删除。}
以上同样可以让button带上各种值。
- [ios]关于tablelist里的每个按钮点击时传值的问题讨论
- 关于iOS中按钮无法点击问题的描述
- iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section
- iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section
- iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section
- 关于jquerymobile的按钮点击在ios设备上响应慢的问题
- 点击不同按钮,弹出每个按钮的不同的内容:
- 表单里只能点击一次的按钮
- iOS - 解决短时间多次点击按钮,多次响应的问题
- IOS返回按钮点击区域扩大的问题
- 关于navigationBar.leftBarItem按钮点击范围太大的问题
- 关于点击按钮后页面自动刷新的问题
- ios 关于 通过加载 xib 生成的view,调用 addsubviews,sub view的按钮 不相应点击事件的 问题
- iOS之a按钮重复点击的问题、cell重复点击的问题
- 统计整个App 的每个按钮点击次数
- 关于“形式化”问题的讨论
- 关于SAT问题的讨论
- UITableView中关于cell里的按钮被点击时如何确定是哪一个cell
- windows程序设计中的 VirtualAlloc
- 10步让你成为更优秀的程序员
- a2dp
- 国外IT网站
- Django-2
- [ios]关于tablelist里的每个按钮点击时传值的问题讨论
- 想成为Java高手的25个学习目标
- Android NDK下面如何使用zlib的库
- 用uaac注册dashboard用户
- 查看SAP数据里面存储长度
- Android有效解决加载大图片时内存溢出的问题
- C语言的谜题
- LeetCode - N-Queens II
- Oracle Database Instance - Oracle 实例篇 6