2012-12-16 61 views
1

任何人都可以告诉我为什么这段代码不起作用吗?将自定义按钮添加到UINavigationItem LeftBarButtonItem

self.backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.backButton setImage:[UIImage imageNamed:@"back_arrow.png"] 
       forState:UIControlStateNormal]; 
self.backButton.contentMode = UIViewContentModeCenter; 
[self.backButton addTarget:self 
        action:@selector(backButtonAction:) 
      forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.backButton]; 
[navigationItem setLeftBarButtonItem:backButtonItem animated:NO]; 
navigationItem.hidesBackButton = YES; 

编辑:

没有出现在leftBarButtonItem。那就是问题所在。

+0

怎么不工作?你看到了什么结果? – rdelmar

+0

什么问题? leftButton没有显示或其他? – Atif

+0

您使用导航控制器吗?你在哪里使用该代码? –

回答

2

从文档:

“当创建自定义按钮,其与按钮的类型UIButtonTypeCustom-的帧被设置为一个按钮(0 ,0,0,0),在将按钮添加到您的界面之前,您应该将帧更新为更合适的值。“

所以,你应该看到的东西,如果你在第2行设置的框架,如:

self.backButton.frame = CGRectMake(0, 0, 40, 20); 
+0

我知道这是愚蠢的:)我没有定义按钮的框架。谢谢。 –

3

这应该工作

CGRect rect = CGRectMake(10, 0, 30, 30); 
self.backButton = [[UIButton alloc] initWithFrame:rect]; 
[self.backButton setImage:[UIImage imageNamed:@"back_arrow.png"] 
       forState:UIControlStateNormal]; 
self.backButton.contentMode = UIViewContentModeCenter; 
[self.backButton addTarget:self 
        action:@selector(backButtonAction:) 
      forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.backButton]; 
self.navigationItem.leftBarButtonItem = backButtonItem; 
self.navigationItem.hidesBackButton = YES; 
+0

我知道这是愚蠢的:)我没有定义一个框架的按钮。谢谢。 –

相关问题