仅在iOS 7.1中reloadData
发生了奇怪的事情。此代码在iOS 7.0中完美运行。我更新了一些变量,然后调用reloadData
:
myNum = 12;
[self.tableView reloadData];
然后在cellForRowAtIndexPath
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
…
[cell.leftScoreButton setTitle:[NSString stringWithFormat:@"%d", myNum] forState:UIControlStateNormal];
cell.leftScoreButton.enabled = NO;
…
这不再在7.1中正确更新按钮标题,但在7.0中工作正常。此外,如果我弹出AlertDialog,它将成功重新加载具有正确标题的tableView
按钮。 AlertDialog
调用的哪一部分更新/刷新底层屏幕?我可以手动拨打电话而不会实际弹出AlertDialog
吗?
我已尝试调用[self.view setNeedsDisplay]
和setNeedsLayout
。没有帮助。
答案 0 :(得分:3)
玩了一会儿后,我发现它与启用的按钮有关。对于没有正确更新的行,我禁用了按钮。我刚刚添加了
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
…
[cell.leftScoreButton setTitle:[NSString stringWithFormat:@"%d", myNum] forState:UIControlStateNormal];
cell.leftScoreButton.enabled = YES;
cell.leftScoreButton.enabled = NO;
…
所以我启用然后立即禁用,现在他们正确更新。
答案 1 :(得分:0)
我遇到了同样的问题。
通过为UIControlStateNormal
,UIControlStateSelected
和UIControlStateHighlighted
设置相同的标题来解决。
看起来更干净的解决方案。
答案 2 :(得分:0)
在我的情况下,这段代码为我做了工作:
[cell.buttonName setNeedsLayout];
我再次要求按钮布局。