如何向UINavigationBar添加多个UIBarButtonItem?

7
我希望向一个 UINavigationbar 添加多个 UIBarButtonItem,而不仅仅是左右两个按钮:
logoButton = [[UIBarButtonItem alloc] initWithTitle:@"A Button" style:UIBarButtonItemStyleBordered target:self action:@selector(logoButtonAClicked:)];

logoButton2 = [[UIBarButtonItem alloc] initWithTitle:@"B Button" style:UIBarButtonItemStyleBordered target:self action:@selector(logoButtonBClicked:)];

logoButto3 = [[UIBarButtonItem alloc] initWithTitle:@"C Button" style:UIBarButtonItemStyleBordered target:self action:@selector(logoButtonCClicked:)];

self.navigationController.navigationBarHidden = NO;

self.title = @"Title";

NSArray* items = [[NSArray alloc] initWithObjects:logoButtonA, logoButtonB, logoButtonC, nil];
self.navigationController.navigationBar.items = items;

当我执行 self.navigationController.navigationBar.items = items;的时候,出现了SIGBRT错误。

如何向UINavigationBar添加多个UIBarButtonItem


可能是重复的问题:在UINavigationBar中使用多个UIBarButtonItems - jscs
3个回答

17
你需要将 UIBarButtonItem 实例添加到 UINavigationItem,而不是 UINavigationBar。所以你可以这样做:
NSArray *buttonArray = [NSArray arrayWithObjects:logoButton, logoButton2, logoButton3, nil];
self.navigationItem.leftBarButtonItems = buttonArray;

如果你想把按钮放在右边,使用rightBarButtonItems

有没有办法添加左侧栏按钮而不使返回按钮消失? - NHDaly

4

您应该使用

self.navigationItem.leftBarButtonItems = items;

-1

在导航栏中使用addSubView。


不是一个好主意...那些按钮看起来和行为都不像标准的UIBarButtonItem实例,此外,UIBarButtonItem也不是UIView的子类,所以你不能调用[navigationBar addSubview:logoButton] - Ash Furrow
UINavigationBar 文档中得知:当您将导航栏作为独立对象使用时,您需要提供其内容。与其他类型的视图不同,您不能直接向导航栏添加子视图。相反,您需要使用导航项(UINavigationItem 类的实例)来指定要显示的按钮或自定义视图。 - JRG-Developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接