我有一个像12345678910111213的数字,我需要将它从一个方法(cellForRow)传递给另一个方法(按钮操作方法)。我过去使用的最简单的方法是通过按钮标签传递它。在这种情况下,它是不可能的(?)。我也可以为它创建一个属性但是封装呢?我想知道做这样的事情的正确(并且最好是简单)方式。提前谢谢!
答案 0 :(得分:1)
嗯,您实际上可以将值附加到UIButton
。如果您有要传递的值,并且您有对该按钮的引用:
static char kMyObject;
objc_setAssociatedObject(myButton, &kMyObject, [NSNumber numberWithInt:myInt], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
另一方面,当您收到按钮为id:
的操作时- (void)myAction:(id)sender
{
UIButton *myButton = (UIButton*)sender;
NSNumber *number=objec_getAssociatedOject(myButton,&kMyObject);
}
答案 1 :(得分:0)
在此整数标记中,您可以将指针(32位地址的大小写)存储到类/结构/无论代表bigint的任何内容。
例如:
UIButton *button = [UIButton ...];
button.tag = (int)[[MyBigInt alloc] initWithString:@"12131312312312312"];
后:
MyBigInt *bigInt = (MyBigInt *)button.tag;
...
[bigInt release];
答案 2 :(得分:0)
你不能像Saad所说的那样将它作为标签传递。您可以在此处使用NSDecimal numbers 。 @Saad不能使用double,因为它会失去精度。
答案 3 :(得分:0)
我将在这里做一些假设,因为我只是通过类似的东西。
首先,您需要获取包含按钮的单元格:
UITableViewCell *cell = nil;
for (UIView *view = sender; view; view = view.superview) {
if ([view isKindOfClass:[UITableViewCell class]]) {
cell = (UITableViewCell *)view;
break;
}
}
接下来,您需要获取该单元格的indexRow:
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
最后,您必须访问您的数据:
ModelClass modelObject* obj = [self.data objectAtIndex:indexPath.row];
现在,您可以对模型进行任何更改。