如何摆脱导航栏顶部的标题,但在项目中保留标题?

时间:2011-08-17 14:36:16

标签: ios objective-c xcode

我有一个导航栏应用程序,它使用我创建的自定义标题:

@implementation UINavigationBar (Background)

-(void)drawRect:(CGRect)rect{

UIImage *customLogo = [UIImage imageNamed:@"UINavBar.png"];
[customLogo drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

}

@end

我试图摆脱顶部的标题,而没有摆脱导航项目中显示的单词。这些是我在viewController中设置的变量:

    NSArray *tableDataSource;
NSString *CurrentTitle;
NSInteger CurrentLevel;

我认为问题在于:

if(CurrentLevel == 0) {

NSArray *tempArray = [[NSArray alloc] init];
self.tableDataSource = tempArray;
[tempArray release];

self.tableDataSource = [self.industryData objectForKey:@"Rows"];
self.navigationItem.title = @"Back";

}
else
    self.navigationItem.title = CurrentTitle;
}

如果我设置navigationitem.title = nil,我就不能再备份了。有没有办法可以让标题消失而不会在导航控制器中丢失它?

2 个答案:

答案 0 :(得分:3)

如果您希望按钮说出back,那么您的方法就错了。

你需要在视图控制器中放置一些这样的代码

  UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:nil
                                                            action:nil];

 self.navigationItem.backBarButtonItem = backButton;
 [backButton release]; backButton = nil;

现在,当下一页被推入堆栈时,后退按钮会显示back而不是我们刚来的控制器的title

现在,如果您希望后退按钮说出前一个视图控制器的title,但是当您当前正在查看视图控制器时,您不希望标题显示在顶部。您只需将标题视图设置为空白视图,如下所示:

self.navigationItem.titleView = [[UIView alloc] initWithFrame:CGRectZero];

答案 1 :(得分:1)

只需设置这样的标题..

self.navigationItem.title = @"";  

应该这样做,如果没有阅读......

也可能是您的NSString未初始化。试试这个。

NSString *currentString = @"";  

这样你就不会将导航项设置为nil,因为它等于CurrentString 另一个指针,我从不为第一个单词设置带大写字母的变量。用固定的词语使事情混乱......