第二级的UINavigationBar自定义标题视图

时间:2012-09-12 11:19:23

标签: objective-c uibutton uinavigationbar customization uibuttonbaritem

我尝试在UINavigationBar的中心插入一个自定义按钮(在titleView中)。这仍然适用于第一级,但是当我在这个TableView中选择一个单元并被推到下一个控制器时,我也无法在第二个控制器上插入此按钮。显示RightBarButtonItem,但不显示titleView。

当我使用默认设置并使用viewController.title时,它会显示在此navigationBar的titleView中,但我的自定义视图未显示。

我在两个控制器中的代码都是

UIButton *centerNavigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
[centerNavigationButton setBackgroundImage:[UIImage imageNamed: @"buttonImage.png"] forState:UIControlStateNormal];

centerNavigationButton.frame = (CGRect) {
  .size.width = 100,
  .size.height = 20,
};
[centerNavigationButton addTarget:self action:@selector(scrollToTop) forControlEvents:UIControlEventTouchUpInside];
[self.navigationController.navigationBar.topItem setTitleView:centerNavigationButton];

我搜索了一天以上,但是我找不到第二级的问题。

感谢您的帮助。


编辑:

解决方案由@Martin R发现 在第一个TableViewController我必须写

UIButton *centerNavigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
[centerNavigationButton setBackgroundImage:[UIImage imageNamed: @"buttonImage.png"] forState:UIControlStateNormal];

centerNavigationButton.frame = (CGRect) {
  .size.width = 100,
  .size.height = 20,
};
[centerNavigationButton addTarget:self action:@selector(scrollToTop) forControlEvents:UIControlEventTouchUpInside];
[self.navigationController.navigationBar.topItem setTitleView:centerNavigationButton];

在第二级:

UIButton *centerNavigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
[centerNavigationButton setBackgroundImage:[UIImage imageNamed: @"buttonImage.png"] forState:UIControlStateNormal];

centerNavigationButton.frame = (CGRect) {
  .size.width = 100,
  .size.height = 20,
};
[centerNavigationButton addTarget:self action:@selector(scrollToTop) forControlEvents:UIControlEventTouchUpInside];
[self.navigationItem setTitleView:centerNavigationButton];

问题可以结束。

非常感谢!从写问题到找到解决方案25分钟!美好的时光!

1 个答案:

答案 0 :(得分:0)

我认为您必须设置视图控制器titleView的{​​{1}}:

navigationItem