重叠文本问题:iOS7

时间:2013-12-12 19:05:29

标签: ios uitableview ios7

我通常会发布源代码和UI的示例,但我认为它与iOS7更改更相关,我不能看到它是一个代码错误(尚未)。我必须发布这么多的代码和用户界面才能适得其反。所以这是我最好的非视觉描述:

自从将项目升级到iOS7后,我发现如果我在UILabel或{{1}中拨打电话来更改setText或拨打UIButton的{​​{1}}它将新文本放在旧文本的顶部。

自从开发iOS以来,我从来没有做过任何不同的事情。如果我这样做:

ViewDidAppear

它不应该把它扔在我现有的标签上。

这尤其发生在ViewWillAppear内部,我在lblMyHours.text = @"12";中为UITableView创建了一个iVar。如果用户在单击单元格后对某个值进行调整(将其带到详细信息屏幕进行编辑),当我弹回时,我会在UILabel中重新计算。在重新计算中,我正在重置上面的标签。但它并没有清除旧的。

2 个答案:

答案 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];
    }
}

希望这有帮助。