【发布时间】:2012-10-31 19:12:39
【问题描述】:
我有以下视图控制器层次结构:
- 视图控制器 VC1
- 选项卡栏控制器 TBC1 - 在情节提要中配置为指向表视图控制器 TVC1 和地图视图控制器 MVC1
- 表格视图控制器 TVC1
- 表格视图控制器 TVC2
在 VC1 中,我这样做:
[self.navigationController pushViewController:TBC1 animated:YES];
这正确地调出了标签栏控制器,并以 TVC1 为焦点。
TVC1 在其导航栏中显示后退按钮(通过 VC1 代码以编程方式创建),这将使我进入 VC1,这是预期的。
但是,从 TVC1 开始,我需要再导航一次到 TVC2。我正在尝试为此向 TVC1 导航栏添加右键,但它没有显示出来。
这是我在TVC1中使用的代码(rightButton是TVC1的UIButton类型属性):
self.rightButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem: UIBarButtonSystemItemAdd
target: self
action: @selector(MySelector:)];
self.rightButton.style = UIBarButtonItemStyleBordered;
self.rightButton.title = @"";
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects: self.rightButton, nil];
(指定空白标题和样式只是为了确保是否是导致此问题的问题,我实际上并不需要这些值)
MySelector 在 TVC1.h 中声明为:
- (void) MySelector:(id)sender;
而且它也得到了正确的实施。
但TVC1导航栏不显示上面的rightButton。
我错过了什么? 我怀疑它带有 VC1 和 TVC1 之间的 TBC1(标签栏),并且它以某种方式重置了导航属性。
但后来我争辩说我在 TVC1 上看到了导航栏,以及一个通向 VC1 的左按钮。 我检查了在 TBC1 中,self.navigationItem.rightBarButtonItems 里面有 1 个对象,这绝对是我要添加的 rightButton。
我哪里错了?
注意:以上适用于所有 iOS 5.0、5.1 和 6.0 模拟器。
【问题讨论】:
-
你在TVC1的
viewDidLoad中设置了rightBarButtonItems吗?顺便说一句:你为什么不直接self.navigationItem.rightBarButtonItem = self.rightButton;?
标签: ios uinavigationcontroller uinavigationbar uinavigationitem