自定义导航栏titleView在加载新标题之前不会清除它们

时间:2012-03-09 03:02:43

标签: objective-c ios uinavigationcontroller uinavigationbar uinavigationitem

所以我创建了一个自定义UINavigationItem类别,以便能够为我的导航栏制作自定义标题视图,但每次我推/弹一个视图时,它只是添加新标题而不删除旧标题导致标题只是杂乱无章的信件。这是相关的代码:

@implementation UINavigationItem (CustomNavigationItem)
-(UIView *)titleView
{
    [self setTitleView:nil];
    UILabel *newTitleView           = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 220, 32)];
    newTitleView.center             = CGPointMake(160, 22);
    newTitleView.backgroundColor    = [UIColor clearColor];
    newTitleView.textColor          = [UIColor whiteColor];
    newTitleView.textAlignment      = UITextAlignmentCenter;
    newTitleView.text               = self.title;
    newTitleView.textAlignment      = UITextAlignmentCenter;
    return newTitleView;
}

@end

1 个答案:

答案 0 :(得分:0)

你必须从超级视图中删除旧的uilabel,设置为nil它不会那样做。这就是你弄乱屏幕上字母的原因。我也不认为你正在接受递归,因为你正在打电话给我,但我可能错了。

您可以快速将标记分配给最新创建的视图。

[[self.view viewWithTag:YourCustomEnumTag] removeFromSuperView];
// create your view....
textView.tag=YourEnumCustomTag;