自定义UITableViewCells中所选按钮状态的问题

时间:2011-06-22 20:30:05

标签: iphone objective-c uitableview

我有一个带有两个按钮的自定义UITableViewCell,mycell.m / mycell.h / mycell.xib。在XIB中,我给按钮提供了样本标签,并在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)中更改了该文本。

现在,当我点击按钮时,我用手指按住它,它将显示示例文本而不是实际文本。如果我错过按钮并触摸自定义UITableViewCell内部,两个按钮都会将文本更改为示例文本,并且它们不会重新显示我在cellForRowAtIndexPath中设置的文本,直到我将屏幕上的单元格滚动并再次返回。

我可能做错的任何线索?我还没有找到任何设置所选文本的方法。

干杯

的Nik

1 个答案:

答案 0 :(得分:1)

好吧,再试一次......

我设置了一个迷你项目并重新创建了问题。在弄清楚为什么我设置的文本没有被使用之后,我终于意识到你可以为每个控件状态设置不同的标题(setTitle:forState :)。通常,如果您只设置了titleLabel.text,那么您将其设置为UIControlStateNormal,默认情况下将其用于所有其他状态。但是,IB显然会为所有状态分别设置样本标题,而不仅仅是正常状态。因此,在您的代码中,您间接执行setTitle:forState:UIControlStateNormal,但IB为所有其他状态设置的标题保持不变。因此,当您按住按钮(UIControlStateSelect)或按下单元格(UIControlStateHighlight)时,将显示示例标签。所以...要么删除IBuilder中的样本标签(简单路径),要么为所有相关状态设置标签。

错误的回答:

cellForRowAtIndexPath仅在tableView需要显示单元格时调用(例如,当向后滚动到屏幕上时)。只要屏幕上有单元格,就不会调用它。听起来你已经有另一个例程(例如buttonPressed)从按钮设置为IBAction。