导航栏iOS 5上有多个按钮?

时间:2012-07-05 20:11:10

标签: objective-c ios

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

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

编辑:

我测试过的一些代码,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];

2 个答案:

答案 0 :(得分:31)

在iOS 5中,UINavigationItem获得了数组属性:rightBarButtonItemsleftBarButtonItems。您可以在类引用中查看有关它们如何与leftBarButtonItemrightBarButtonItem以及后退按钮here相关的详细信息。

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

编辑

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

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

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

答案 1 :(得分: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;