我有覆盖整个屏幕(480px)的 UITableView。
每个单元格的高度为 300 像素。
我总共有 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====
现在,当标签和文本设置正确时,为什么我看到最后两个按钮为 B-1 和 B-2 而不是 B-4 和 B-5。
知道如何解决这个问题吗?
截图 1
截图 2
截图 3
知道如何解决这个问题,以便我写 B-1 到 B-5 吗?
注意:如果我将单元格的高度降低到 100,我会看到所有按钮文本为 B-1 到 B-5。
这个问题与我的旧问题有关,但这是一个更简单的版本。
示例项目
我所做的是,没有使用标签并使用accessibilityValue,我正在获取按钮单击的ID。