大家好,我的自定义导航栏有问题。
我需要创建一个自定义导航栏,这将在多个视图控制器中使用,因此我将其创建为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个按钮signIn和Register当我点击signIn按钮时它将带我登录视图,当我点击注册按钮时它将带我进入注册视图。 我创建了2个ViewControllers并使用代码将两个视图中的navigationBarLabel设置为Register和SignIn:
[self setCustomLabel:@"REGISTER"];
和
[self setCustomLabel:@"SIGN IN"];
视图的标题显示为
和
当我第一次运行应用程序并单击寄存器或signIn按钮时它确实看起来这样,但是如果我点击任意2个按钮导航到寄存器或signIn视图然后我返回并单击第二个按钮导航栏更改为
请帮助我,我已经在这很长一段时间了,我在viewDidAppear中设置了导航栏,我也尝试将其设置为nil
[self setCustomLabel:nil];
在viewWillDisappear和viewDidDisappear中。我是iPhone开发的新手帮助我
答案 0 :(得分:2)
这是因为您将标签添加到导航栏。因为它是相同的导航栏,无论你去多少视图,它只是不断向栏添加新标签并将它们留在那里。
我看到它的方式你有两种方法可以解决这个问题:
您可以一次创建一个单一标签,并将其始终放在导航栏上,只需在方法中设置其文本,使其始终具有正确的文本,并在您不希望它时将其设置为隐藏可见。
您可以执行相同的操作,但在标签上添加tag
,在创建新标签之前,您可以遍历NavigationBar
的子视图并删除检查标签的旧标签。
答案 1 :(得分: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];
}