我的代码成功地创建了一个出现在导航栏上的自定义UIBarButtonItem。我在其他视图控制器中使用了代码,它工作得很好,但在UITableViewController中,按钮显示为常规的BackButtonItem。有人能帮帮我吗?下面是我在所有viewControllers中的viewDidLoad方法中使用的代码
@implementation P2OListViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
UIImage *backButtonImage = [UIImage imageNamed:@"button-back@2x.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 60, 35);
[backButton addTarget:self
action:@selector(goToMenu:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *back = [[UIBarButtonItem alloc]initWithCustomView:backButton];
self.navigationItem.backBarButtonItem = back;
- (void)viewWillAppear:(BOOL)animated {
}
- (void)goToMenu:(id)sender {
[self.navigationController popToRootViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
发布于 2013-01-27 05:15:18
通过将默认backBarButtonItem的hide属性设置为yes来隐藏它
self.navigationItem.hidesBackButton = YES;
在你的viewWillAppear中
- (void)viewWillAppear:(BOOL)animated
{
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
UIImage *backButtonImage = [UIImage imageNamed:@"button-back@2x.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 60, 35);
[backButton addTarget:self
action:@selector(goToMenu:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *back = [[UIBarButtonItem alloc]initWithCustomView:backButton];
self.navigationItem.backBarButtonItem = back;
}
如果上面不起作用,试试这个,看看会发生什么:
if (!self.navigationItem.backBarButtonItem.hidden) {
self.navigationItem.backBarButtonItem.hidden = YES;
}
else {
NSLog(@"back button already hidden");
}
https://stackoverflow.com/questions/14544612
复制相似问题