0

我想关闭我的导航栏图像(不是背景图像)。也就是说,我在左侧设置了导航栏图像。当我转到下一个控制器时,图像与后退按钮重叠。这是我的主屏幕,带有蓝色标记的图像。主屏幕

这是我的第二个屏幕,图像重叠

在此处输入图像描述

这是我用来在栏中设置图像的代码

UINavigationBar *bar = [self.navigationController navigationBar];
UIImageView *barImg=[[UIImageView alloc]initWithFrame:CGRectMake(2, 3, 49, 39)];
barImg.image=[UIImage imageNamed:@"smalllogo.png"];

[bar addSubview:barImg];
[barImg release];

现在我不想在我的其他屏幕上显示图像,我该怎么办?

4

2 回答 2

0

您已在导航栏中添加了图像,但在移动到其他视图之前未将其删除。使用`

-(void)viewWillDisappear:(BOOL)animated{

    [barImg removeFromSuperview];
}` 

将其从超级视图中删除。

于 2012-04-30T10:12:45.723 回答
0

您可以做的一件事是在方法中添加您的图像,并在viewWillAppear:方法时将其从导航栏中删除viewWillDisappear:。相关代码块如下。

    - (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    UINavigationBar *bar = [self.navigationController navigationBar];
    UIImageView *barImg=[[UIImageView alloc]initWithFrame:CGRectMake(2, 3, 49, 39)];
    barImg.image=[UIImage imageNamed:@"smalllogo.png"];
    barImg.tag = 100;
    [bar addSubview:barImg];
    [barImg release];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    UINavigationBar *bar = [self.navigationController navigationBar];
    [[bar viewWithTag:100] removeFromSuperview];
}

或者这是另一个简单的解决方案。将以下代码段添加到viewWillAppear:方法中

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"smalllogo.png"]]];
[self.navigationItem setLeftBarButtonItem:item];
[item release];
于 2012-04-30T09:52:06.093 回答