我尝试为单元格内的按钮设置tag
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
[cell.btnWithIdCell setTag: (int) self.responseObject[@"results"][indexPath.row][@"id"]];
}
点击按钮后,我尝试获取tag
:
- (IBAction)open:(id)sender {
NSString* tagString = [NSString stringWithFormat:@"%d", [sender tag]];
}
它给了我错误的号码tagString
。
如何为响应对象设置按钮标记?
答案 0 :(得分:2)
在单元格中设置按钮的标记:
cell.btnWithIdCell.tag = indexPath.row;
答案 1 :(得分:0)
只需使用您的响应对象(应该是可以分配给标记的类型)代替indexPath,并根据应用程序要求在按钮操作中使用逻辑。
答案 2 :(得分:0)
什么是"错误"标签?因为tag是一个NSInteger,我相信你的调用(int) self...[indexPath.row][@"id"]
会返回一个引用对象,它不是NSInteger,但可能是NSNumber *
因此,在设置按钮标记时,您需要在该通话结束时添加[... integerValue]
答案 3 :(得分:-1)
请使用- (IBAction)open:(UIButton *)sender
- (IBAction)open:(id)sender
如果没有工作,那么使用另一种方式在IBAction中获取数据如下方法非常简单且非常快速地tag
#import <objc/runtime.h>
然后使用tableview
方法和IBAction
相同的方法,如下面的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
objc_setAssociatedObject(cell.btnWithIdCell, @"yourObjKey", self.responseObject[@"results"][indexPath.row][@"id"], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[cell.btnWithIdCell addTarget:self action:@selector(open:) forControlEvents:UIControlEventTouchUpInside];
}
- (IBAction)open:(UIButton *)sender {
NSString *tagString = objc_getAssociatedObject(sender, @"yourObjKey");
}