0

大家好,我的自定义导航栏有问题。

我需要创建一个自定义导航栏,这将在多个视图控制器中使用,所以我将它创建为 UIViewController 的一个类别,并使用以下代码来创建我需要的自定义。

- (void)setCustomLabel:(NSString *)labelText
{
    UILabel *navigationLabel = [[UILabel alloc]initWithFrame:CGRectMake(60,10,40,40)];
    [navigationLabel setBackgroundColor:[UIColor clearColor]];
    navigationLabel.font = [UIFont fontWithName:@"Humanist 521 BT-Bold" size:15.0];
    navigationLabel.font = [UIFont boldSystemFontOfSize:18.0];
    navigationLabel.textColor = [UIColor whiteColor];
    navigationLabel.text = labelText;

    navigationLabel.shadowColor = [UIColor colorWithRed:241.0/255.0 green:241.0/255.0 blue:241.0/255.0 alpha:1.0];
    navigationLabel.shadowOffset = CGSizeMake(0.0, -1.0);

    [navigationLabel sizeToFit];

    [self.navigationController.navigationBar addSubview:navigationLabel];

    [navigationLabel release];

}

在第一个视图中,有 2 个按钮登录和注册,当我单击登录按钮时,它将带我进入登录视图,当我单击注册按钮时,它将带我进入注册视图。我创建了 2 个 ViewController,并使用以下代码将两个视图中的 navigationBarLabel 设置为 Register 和 SignIn:

[self setCustomLabel:@"REGISTER"]; 

[self setCustomLabel:@"SIGN IN"];

视图的标题显示为在此处输入图像描述

在此处输入图像描述

当我第一次运行应用程序并单击注册或登录按钮时,它看起来确实如此,但是如果我单击两个按钮中的任何一个,导航到注册或登录视图,然后我返回并单击第二个按钮导航栏更改为

在此处输入图像描述

请帮帮我我已经做了很长时间了我在viewDidAppear中设置了导航栏,我也尝试将它设置为nil

[self setCustomLabel:nil];

在 viewWillDisappear 和 viewDidDisappear 中。我是 iPhone 开发新手,请帮帮我

4

2 回答 2

2

这是因为您标签添加到导航栏。由于无论您访问多少视图,它都是同一个导航栏,它只是不断向导航栏添加新标签并将它们留在那里。

在我看来,您有两种选择来解决此问题:

  1. 您可以一次创建一个单数标签,并将其始终放在导航栏上,只需在方法中设置其文本,使其始终具有正确的文本,并在您不希望它可见时将其设置为隐藏。

  2. 您可以做同样的事情,但tag在标签中添加 a 并在创建新标签之前,您可以遍历NavigationBar的子视图并通过检查标签来删除旧标签。

于 2013-08-11T04:33:37.577 回答
0

添加新标签时,您不会从导航栏中删除标签。[navigationLabel removeFromSuperview]当你想设置一个新的时,也许你应该尝试调用它。(这意味着您可能必须将其存储在@property 中)

例子:

头文件:

@property (assign, nonatomic) UILabel *navigationLabel;

实现文件:

@synthesize navigationLabel

- (void)setCustomLabel:(NSString *)labelText {
    if (self.navigationLabel) [self.navigationLabel removeFromSuperview];

    self.navigationLabel = [[UILabel alloc]initWithFrame:CGRectMake(60,10,40,40)];
    [self.navigationLabel setBackgroundColor:[UIColor clearColor]];
    self.navigationLabel.font = [UIFont fontWithName:@"Humanist 521 BT-Bold" size:15.0];
    self.navigationLabel.font = [UIFont boldSystemFontOfSize:18.0];
    self.navigationLabel.textColor = [UIColor whiteColor];
    self.navigationLabel.text = labelText;

    self.navigationLabel.shadowColor = [UIColor colorWithRed:241.0/255.0 green:241.0/255.0 blue:241.0/255.0 alpha:1.0];
    self.navigationLabel.shadowOffset = CGSizeMake(0.0, -1.0);

    [self.navigationLabel sizeToFit];

    [self.navigationController.navigationBar addSubview:self.navigationLabel];

    [self.navigationLabel release];

}
于 2013-08-11T04:43:31.223 回答