我通常会发布源代码和UI的示例,但我认为它与iOS7更改更相关,我不能看到它是一个代码错误(尚未)。我必须发布这么多的代码和用户界面才能适得其反。所以这是我最好的非视觉描述:
自从将项目升级到iOS7后,我发现如果我在UILabel
或{{1}中拨打电话来更改setText
或拨打UIButton
的{{1}}它将新文本放在旧文本的顶部。
自从开发iOS以来,我从来没有做过任何不同的事情。如果我这样做:
ViewDidAppear
它不应该把它扔在我现有的标签上。
这尤其发生在ViewWillAppear
内部,我在lblMyHours.text = @"12";
中为UITableView
创建了一个iVar。如果用户在单击单元格后对某个值进行调整(将其带到详细信息屏幕进行编辑),当我弹回时,我会在UILabel
中重新计算。在重新计算中,我正在重置上面的标签。但它并没有清除旧的。
答案 0 :(得分:1)
每次返回新单元格时,您可能会添加新标签。 您应该只替换当前标签的文本。
答案 1 :(得分:1)
实现这一目标有两种方法,一种是你已经在做的,正如@Guilherme正确指出的那样。另一种方法是创建一个自定义tableview单元格并将UILabel属性放在那里。对于viewDidAppear场景,您可以在.h文件中创建一个uilabel(在@interface声明中),然后在ViewDidLoad方法中初始化它,并在ViewDidAppear方法中简单使用,而不必再次声明它。
我建议您按照我为ViewDidAppear问题描述的方式,并且对于UITableView问题,每次调用cellForRowAtIndex方法时在单元的子视图中搜索UILabel并将其从子视图中删除,在添加新的之前标签
for(UIView *view in cell.subviews)
{
if([view isKindOfClass:[UILabel class]])
{
[view removeFromSuperview];
}
}
希望这有帮助。