画面全体(480px)をカバーするUITableViewがあります。
各セルの高さは 300px です。
合計5行あります。
以下は私が使用したコードです。
-(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];
if (cell==nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
}
UIButton *myButton = (UIButton *)[cell viewWithTag:999999999];
int i = indexPath.row+1;
myButton.tag = i;
myButton.titleLabel.text = [NSString stringWithFormat:@"B - %d", i];
[myButton setTitle:[NSString stringWithFormat:@"B - %d", i] forState:UIControlStateNormal];
NSLog(@"tag set is %d & text for button is =====B-%d====", i,i);
[myButton addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
- (int) tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}
-(IBAction)btnSelected:(id)sender {
UIButton *button = (UIButton *)sender;
NSLog(@"my tag after click is ===%d", [button tag]);
}
このコードを実行すると、各セルB - 1
にB - 5
書き込む必要があると予想されました。しかし、 の後B - 3
、私が見るのはB - 1
とだけB- 2
です。
NSLogは以下のように言います。
2013-07-28 23:31:34.281 NewTest[1783:11303] tag set is 1 & text for button is =====B-1====
2013-07-28 23:31:34.284 NewTest[1783:11303] tag set is 2 & text for button is =====B-2====
完全に下にスクロールすると、次のように NSLog が表示されます。
2013-07-28 23:31:34.281 NewTest[1783:11303] tag set is 1 & text for button is =====B-1====
2013-07-28 23:31:34.284 NewTest[1783:11303] tag set is 2 & text for button is =====B-2====
2013-07-28 23:32:03.643 NewTest[1783:11303] tag set is 3 & text for button is =====B-3====
2013-07-28 23:32:03.719 NewTest[1783:11303] tag set is 4 & text for button is =====B-4====
2013-07-28 23:32:03.835 NewTest[1783:11303] tag set is 5 & text for button is =====B-5====
タグとテキストが適切に設定されている場合、最後の 2 つのボタンが B-4 と B-5 ではなく B-1 と B-2 として表示されるのはなぜですか。
この問題を解決する方法はありますか?
スクリーンショット 1
スクリーンショット 2
スクリーンショット 3
この問題を解決して B-1 から B-5 を書く方法はありますか?
注 : セルの高さを 100 に減らすと、すべてのボタン テキストが B-1 から B-5 として表示されます。
この質問は私の古い質問に関連していますが、これはより単純なバージョンです。
サンプルプロジェクト
私がしたことは、タグを使用せず、accessibilityValue を使用して、クリックされたボタンの ID を取得していることです。