我有以下视图控制器层次结构:
- 视图控制器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。
我错过了什么吗? 我怀疑是TBC1(选项卡栏)的问题,它位于VC1和TVC1之间,并且以某种方式重置了导航属性。
但是,我认为我在TVC1上看到了导航栏,并且有一个向左的按钮可以返回VC1。 我检查了一下,在TBC1中,self.navigationItem.rightBarButtonItems里面有1个对象,其中绝对是我添加的rightButton。
我错在哪里了?
注意:以上内容在所有iOS 5.0、5.1和6.0模拟器中都可以找到。
viewDidLoad
中设置了rightBarButtonItems
吗?顺便问一下,为什么不直接使用self.navigationItem.rightBarButtonItem = self.rightButton;
呢? - Eddie G.