我有一个名为TVC的TableViewController
和一个单元格。当我点击单元格时,TableViewController
会将新的ViewController
(VC)推送到其导航控制器中。在这种情况下,我在TVC的[self.navigationItem.backBarButtonItem setTitle:@" "]
功能中设置了viewDidLoad
。但是在新推的ViewController
VC中,后退按钮仍然有"后退"文本。谁能解释一下呢?
TableViewController
TVC也被另一个视图控制器VC2推送。我在VC2的[self.navigationItem.backBarButtonItem setTitle:@" "]
函数中设置了相同的函数viewDidLoad
,并且正确隐藏了TVC中显示的后退按钮文本。
答案 0 :(得分:2)
Bimala和Ted指出的是解决问题的两种方法。前者是设置自定义BackButtonItem,后者是简单地使用默认的BackButton。但是将屏幕标题设置为“”并不总是可以接受的。所以你可以选择在ViewWillDisappear方法中做同样的事情。
OBJ C:
-(void) viewWillDisappear:(BOOL)animated{
self.navigationItem.title = @"";
[super viewWillDisappear:animated];
}
(SWIFT):
override func viewWillDisappear(animated: Bool) {
self.title = ""
super.viewWillDisappear(true)
}
您也可以在ViewWillappear
中设置标题OBJ C:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationItem.title = @"your title";
}
(SWIFT):
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
self.title = "your title"
}
答案 1 :(得分:1)
这是因为后退按钮采用了前一个视图控制器的标题。如果没有设置,则默认为返回。因此,将TableViewController的名称设置为空字符串,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = ""
}
答案 2 :(得分:0)
我的榜样:
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[leftView setBackgroundColor:[UIColor clearColor]];
UIButton *leftViewButton = [UIButton buttonWithType:UIButtonTypeCustom];
[leftViewButton setFrame:CGRectMake(0, 0, 30, 30)];
[leftView addSubview:leftViewButton];
[leftViewButton setImage:[UIImage imageNamed:@"NavigationBarButtonBackDefault"] forState:UIControlStateNormal];
[leftViewButton setImage:[UIImage imageNamed:@"NavigationBarButtonBackPressed"] forState:UIControlStateHighlighted];
UIBarButtonItem *barButtonItemLeft = [[UIBarButtonItem alloc] initWithCustomView:leftView];
self.navigationItem.leftBarButtonItem = barButtonItemLeft;
来自文档:
如果后退按钮的标题太长而无法放入导航栏上的可用空间,则导航栏可以替换字符串“Back”代替按钮的原始标题。仅当前一个视图控制器提供后退按钮时,导航栏才会执行此操作。如果新的顶级视图控制器具有自定义左栏按钮项 - 其导航项的leftBarButtonItems或leftBarButtonItem属性中的对象 - 导航栏不会更改按钮标题。
答案 3 :(得分:0)
如果您只想隐藏“返回”按钮,请尝试:
self.navigationItem.hidesBackButton = YES;
或
self.navigationController.navigationBar.topItem.hidesBackButton = YES;
如果要设置自定义后退按钮,请使用:
UIBarButtonItem *barButtonItem = [ [UIBarButtonItem alloc] initWithTitle: @"Custom"
style: UIBarButtonItemStylePlain
target: nil action: nil];
self.navigationController.navigationBar.topItem.backBarButtonItem = barButtonItem;