2012-02-09 59 views
1

我在我的项目中有Storyboard。我使用[UIBarButtonItem setCustomView:]方法来自定义工具栏按钮。例如:为什么[UIBarButtonItem setCustomView:]方法在Storyboard中禁用了segue?

[self setCustomView:[[UIImageView alloc] initWithImage:image]]; 

现在他们看起来是我需要的。但我发现这种方法以某种方式禁用了我为这个工具栏项目设置的segue。我的意思是,segue没有它,但是当我尝试使用这种方法进行定制时,segue不起作用。但为什么?

我不想使用代码中的目标动作模式,我相信只能使用Storyboard。

回答

1

我试过你已经做了相同的结果 - 图片是正确的,但UIBarButtonItem没有反应时按下。可能这是一个错误。我的工作如下:

要在故事板中执行此操作,请将UIButton添加到工具栏中。您应该看到故事板通过将UIButton放入UIBarButton中来添加它。在UIButton上添加segue。在故事板中自定义UIButton。在我的应用程序中,我将大小设置为40 x 40.然后在您的代码中使用视图定制UIButton。下面是代码的一个例子的的ImageView添加到的UIButton:

[sampleImageView setFrame:CGRectMake(0, 0, 40, 40)]; 
[swapButton addSubview:sampleImageView]; 

注:故事板可以是离奇有关添加UIButtons到工具栏。看起来好像你在一个绑定到导航控制器的工具栏中执行它,它不会让你添加它。我已经解决了这个问题,在故事板中添加了一个虚拟视图控制器,添加了一个工具栏,然后将UIButton拖到该工具栏中。故事板将通过将UIButton封装在UIButtonBarItem中来为您创建。然后,您可以复制到项目中所需的工具栏并删除虚拟视图控制器。

还有其他方法可以做到这一点,例如在代码中创建按钮并将其添加到工具栏。上面的方法使代码最小化。

+0

嗯... UIBarButton?可能是UIBarButtonItem。但它具有customView属性。我不能把UIButton放入Storyboard中的UIBarButtonItem中。你能解释一下你的意思吗? – Lloyd18 2012-02-10 05:44:57

+0

@ Lloyd18我对UIBArButtonItem进行了扩展更正。我更详细地更新了我的答案。 – 2012-02-10 15:22:58

2

我一直在尝试配置故事板中的所有segues,但我需要为rightBarButtonItem创建一个自定义视图。为了确保SEGUE仍然有效,只需设置customView前加入这一行:

[filterButton addTarget:self.navigationItem.rightBarButtonItem.target action:self.navigationItem.rightBarButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 

这样,你在你的故事板设立塞格斯仍会触发与customViews。

我的整个自定义按钮的代码如下所示:

UIButton *filterButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[filterButton setImage:[UIImage imageNamed:@"filter"] forState:UIControlStateNormal]; 
[filterButton setFrame:CGRectMake(0, 0, 36, 36)]; 
[filterButton addTarget:self.navigationItem.rightBarButtonItem.target action:self.navigationItem.rightBarButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.rightBarButtonItem.customView = filterButton; 
相关问题