13

我知道这个话题有很多,但我无法让任何代码工作。我正在运行 iOS5 并为 iPad 构建,我只是无法在导航栏的一侧获得两个按钮。

任何帮助将不胜感激,谢谢。

编辑:

我测试过的一些代码,它 in viewDidLoad,但没有做任何事情。

UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(save)];

    UIBarButtonItem *deleteButton = [[UIBarButtonItem alloc] initWithTitle:@"Delete" style:UIBarButtonItemStylePlain target:self action:@selector(delete)];

    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:saveButton,deleteButton,nil];
4

2 回答 2

31

在 iOS 5 中UINavigationItem获得了数组属性:rightBarButtonItemsleftBarButtonItems. 您可以在类参考 中查看更多关于它们如何工作的详细信息,leftBarButtonItem以及此处rightBarButtonItem的后退按钮。

简而言之,您只需使用按钮制作一个数组,然后设置导航项的属性。我使用此功能在导航栏的左侧和右侧都有两个按钮。

编辑

这是我用来创建数组的代码。我的按钮都是在界面生成器中创建的:

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:backButton, settingsButton, nil];
self.navigationItem.leftItemsSupplementBackButton = YES;

self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:continueButton, saveButton, nil];
于 2012-07-05T20:16:22.453 回答
0

我相信这些答案假设您使用的是默认导航栏。(换句话说,当你使用 UINavigationViewController 时,iOS 会“免费”提供给你。)

如果您使用的是自定义 UINavigationBar,则需要检索它的第一个 UINavigationItem。(您也可以覆盖默认的 UINavigationItem。)从那里,您可以设置 leftBarButtonItems 和 rightBarButtonItems 属性。

像这样的东西:

// customNavBar points to my custom UINavigationBar
navItem = [[UINavigationItem alloc] initWithTitle:@"Details"];
NSArray *navArray = [[NSArray alloc] initWithObjects:navItem, nil];
[customNavBar setItems:navArray];  // This wipes out all existing UINavigationItem objects

NSArray *leftArray = [[NSArray alloc] initWithObjects:itemOk, nil];
NSArray *rightArray = [[NSArray alloc] initWithObjects:itemCancel, nil];
navItem.leftBarButtonItems = leftArray;
navItem.rightBarButtonItems= rightArray;
于 2013-07-03T19:17:17.483 回答