我有一个包含两个部分的简单UITableView。每个部分都有一个正确显示的标题。
在第二部分中,它的标题中有一个UIButton (以及一个UILabel) --节标题的视图是从xib加载的--同样,它显示得很好,并且该按钮对点击做出反应并调用我的IBAction。
此部分中的每个表单元格也都有一个按钮。当这些按钮中的一个被点击时,我用计数更新部分标题中按钮中的文本。作为背景,每个表单元格代表一个联系人,点击给定单元格中的按钮将该联系人添加到列表中,点击部分标题中的按钮将对列表中的所有联系人执行操作。
这就是问题的症结--当表格视图第一次显示时,点击单元格中的按钮可以立即正确地更新部分标题按钮文本。一旦我滚动了表格,并点击按钮,区段标题按钮文本就不再更新。
如果我用力向上滚动表格,使得部分标题撞到顶部,则部分标题按钮标签会突然更新,就好像重绘事件已经排队并突然释放一样。
我尝试过在主线程上执行更新,在异步分派块中执行,调用setNeedsDisplay/Layout等。它拒绝更新,除非我处理表。
在更新按钮文本之后调用表上的reloadData是可行的,但这似乎非常繁重。
谢谢你的见解。
更新按钮文本的代码:
NSString *l = NSLocalizedString(@"INVITE_LABEL", nil);
NSString *label = [NSString stringWithFormat:l, [invitedEmails count]];
[inviteSelectedButton setTitle:label forState:UIControlStateNormal];从表视图按钮点击事件的IBAction调用。如果我在代码后面加上:
[self.viewController.addressBookTable reloadData];上面的代码每次都能正常工作。
发布于 2011-07-27 02:59:44
我以前也遇到过类似的问题,比如表视图中的按钮-单元格或标题。在我的情况下,即使我认为我通过滚动或表格重新加载正确地定位了所需的Button View,但实际上该按钮正被替换为一个新的实例。我的解决方案没有太多细节,我的解决方案是创建一个自定义按钮,它继承了UIButton,并通过直接在(Id)发送者或通过发布UINotifications调用方法来适当地响应我的操作。
我不确定这是否会帮助你解决你的问题,但也许它会触发一个解决方案。
https://stackoverflow.com/questions/6104251
复制相似问题