我使用对presentModalViewController
的调用提交了一个视图。
我的新视图没有导航栏,因此我在库中添加了一个,但现在我在控制器的UIBarButtonItem
中创建了viewDidLoad
,并将其设置为{{1} } rightBarButtonItem
。
但是当我运行我的应用程序时,导航栏就在那里,但没有按钮。
我错过了一步还是什么?
答案 0 :(得分:0)
手动添加导航栏不会使self.navigationController
属性生效,而且其值为nil
,我相信您用它来添加UIBarButtonItem
实例。< / p>
我建议在控制器中声明UINavigationBar
IBOutlet,在NIB编辑器中将其与您添加的导航栏连接,然后在viewDidLoad
中使用类似的内容:
@interface ...
@property (nonatomic, retain) IBOutlet UINavigationBar *theBar;
@end
@implementation ...
@synthesize theBar;
-(void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *yourButton = ...;
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"MyTitle"];
item.rightBarButtonItem = yourButton;
[theBar pushNavigationItem: item animated:NO];
[item release];
...
}
@end
答案 1 :(得分:0)
如果添加带有界面构建器的导航栏 或者添加代码,然后你需要使用 - (void)pushNavigationItem:(UINavigationItem *)项目动画:(BOOL)动画
自己添加UINavigationItem
你可以创建一个UINavigationController use - (id)initWithRootViewController:(UIViewController *)yourViewController
并使用presentModalViewController显示您创建的UINavigationController
然后你可以使用UIViewController的navigationBarItem属性在viewDidLoad中设置rightBarButtonItem
答案 2 :(得分:0)
实际上它比这更容易:
将UINavigationBar拖到您的应用中。请注意,当您执行此操作时,您还将获得UINavigationItem ...请确保保留它。
将以下属性添加到您的应用中:
@property (weak, nonatomic) IBOutlet UINavigationItem *navigationItem;
Xcode可能会指示错误(您正在覆盖UIViewController的内置属性),因此您必须手动合成getter和setter。在类的@implementation语句下添加以下行:
@synthesize navigationItem;
在Interface Builder中,将连接从新的navigationItem属性拖到自定义导航项。
您现在可以使用self.navigationItem访问导航项,就像您通常一样。