我有一个导航栏应用程序,它使用我创建的自定义标题:
@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,我就不能再备份了。有没有办法可以让标题消失而不会在导航控制器中丢失它?
答案 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 另一个指针,我从不为第一个单词设置带大写字母的变量。用固定的词语使事情混乱......