首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >自定义UIBarButton在UITableView中显示不正确

自定义UIBarButton在UITableView中显示不正确
EN

Stack Overflow用户
提问于 2013-01-27 05:06:58
回答 1查看 207关注 0票数 0

我的代码成功地创建了一个出现在导航栏上的自定义UIBarButtonItem。我在其他视图控制器中使用了代码,它工作得很好,但在UITableViewController中,按钮显示为常规的BackButtonItem。有人能帮帮我吗?下面是我在所有viewControllers中的viewDidLoad方法中使用的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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

EN

回答 1

Stack Overflow用户

发布于 2013-01-27 05:15:18

通过将默认backBarButtonItem的hide属性设置为yes来隐藏它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.navigationItem.hidesBackButton = YES;

在你的viewWillAppear中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (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;

}

如果上面不起作用,试试这个,看看会发生什么:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!self.navigationItem.backBarButtonItem.hidden) {
      self.navigationItem.backBarButtonItem.hidden = YES;
   }
   else { 
      NSLog(@"back button already hidden");
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14544612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文