>查看控制器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;
而且它也得到了适当的实施.
但上面的rightButton不会显示在TVC1导航栏中.
我错过了什么?
我怀疑它与VC1和TVC1之间的TBC1(标签栏),并以某种方式重置导航属性.
但后来我争辩说我在TVC1上看到了导航栏,而左边的按钮则指向VC1.
我在TBC1中检查过,self.navigationItem.rightBarButtonItems里面有一个对象,其中肯定是我正在添加的rightButton.
我哪里错了?
注意:以上内容适用于所有iOS 5.0,5.1和6.0模拟器.
解决方法
[编辑]
我通过在故事板中创建视图控制器结构来重现您的问题.
如果你注意到这里TVC1没有它的UINavigationController,但它是从VC1继承的.你的问题的解决方案不是将rightButton添加到self上,而是将它添加到self.parentViewController,你将在TVC1中看到rightButton.但请注意,它也会出现在MVC1中,因为它属于TBC1的父级.你可以在MVC1的viewWillAppear中隐藏右键按钮,如果你不想在那里.以下是代码.
self.rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target: self action: @selector(MySelector:)]; self.rightButton.style = UIBarButtonItemStyleBordered; self.parentViewController.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects: self.rightButton,nil];
如果要在TVC1的导航控制器中添加右键,则需要将TVC1嵌入到UINavigationController中.为此,请在故事板中选择TVC1屏幕 – >编辑 – >嵌入 – >导航控制器.当你这样做时,你的代码也会工作,并会显示你的右键,但由于你的故事板结构,你将有两个导航控制器(见下图).您将需要隐藏Parent的导航控制器进入TVC1的视图加载并留下按钮弹出到Parentview Controller.你在MVC1中做同样的事情.
希望这可以帮助!快乐编码:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。