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
この整数タグには、クラス/構造/bigintを表すものへのポインタ(32ビットアドレスの場合)を格納できます。
例えば:
UIButton *button = [UIButton ...];
button.tag = (int)[[MyBigInt alloc] initWithString:@"12131312312312312"];
後:
MyBigInt *bigInt = (MyBigInt *)button.tag;
...
[bigInt release];
于 2012-05-11T12:29:07.753 に答える
0
Saadが言ったように、タグとして渡すことはできません。ここでNSDecimal番号を使用できます。@Saadは、精度が低下するため、doubleを使用できません。
于 2012-05-11T12:50:00.253 に答える
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 に答える