UITut部分标题中的UIButton未更新

时间:2011-05-23 23:37:43

标签: iphone cocoa-touch

我有一个简单的UITableView,有两个部分。每个部分都有一个正确显示的标题。

在第二部分中,它的标题中有一个UIButton(以及一个UILabel) - 部分标题的视图是从xib加载的 - 再次,它看起来很好,按钮对点击和调用作出反应我的IBAction。

本节中的每个表格单元格也有一个按钮。当点击其中一个按钮时,我会使用计数更新节标题中按钮中的文本。对于背景,每个表格单元格代表一个联系人,点击给定单元格中的按钮会将该联系人添加到列表中,点击该部分标题中的按钮将对列表中的所有联系人执行操作。

这就是症结所在 - 当tableview首次显示时,点击单元格中的按钮会立即正确更新节标题按钮文本。一旦我滚动表格,即使是一点点,然后点击按钮,部分标题按钮文本也不再更新。

如果我将表格硬盘向上滚动,使得节标题顶部或类似,则节标题按钮标签会突然更新,就像重绘事件已排队并突然释放一样。

我尝试在主线程上执行更新,在异步调度块中调用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];

上面的代码每次都可以正常工作。

1 个答案:

答案 0 :(得分:3)

我之前在表视图中的按钮(单元格或标题)中遇到过类似的问题。在我的情况下,即使我相信我正确地定位了所需的按钮视图,滚动或表重新加载,按钮实际上正在被新实例替换。在没有详细说明的情况下,我的解决方案是创建一个自定义按钮,该按钮将UIButton子类化并通过直接在(id)发送方上调用方法或通过发布UINotifications来适当地响应我的操作。

我不确定这是否可以帮助您解决问题,但也许会触发解决方案。