我有一个像 12345678910111213 这样的数字,我需要将它从一个方法(cellForRow)传递给另一个(按钮操作方法)。我曾经使用的最简单的方法是通过按钮标签传递它。在这种情况下,这是不可能的(?)。我也可以为它创建一个属性,但是封装呢?我想知道真正正确(最好是简单)的方式来做这样的事情。提前致谢!
问问题
147 次
4 回答
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);
}
于 2012-05-11T12:29:06.073 回答
0
正如萨德所说,您不能将其作为标签传递。您可以在此处使用NSDecimal 数字。@Saad 不能使用双精度,因为它会失去精度。
于 2012-05-11T12:50:00.253 回答
0
在这个整数标签中,您可以将指针(32 位地址的情况)存储到类/结构/代表 bigint 的任何内容。
例如:
UIButton *button = [UIButton ...];
button.tag = (int)[[MyBigInt alloc] initWithString:@"12131312312312312"];
后:
MyBigInt *bigInt = (MyBigInt *)button.tag;
...
[bigInt release];
于 2012-05-11T12:29:07.753 回答
0
我将在这里做一些假设,因为我只是在经历类似的事情时。
- 带有操作的 UIButton 位于 UITableViewCell 中。
- 您拥有所有数据的基础来源(即,包含所有数据的数组)。
- 您可以轻松访问您的 tableView。
首先,您需要获取包含按钮的单元格:
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];
现在,您可以对模型进行所需的任何更改。
于 2012-05-11T14:10:50.173 回答