我在ViewController的viewDidLoad方法中添加了代码。我有两个UIBarButtonItem,其中一个在左边叫做Left,另一个在右边叫做Right。我可以让左键工作,但我甚至看不到正确的按钮。我做错了什么?
UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 420, 44)];
[navbar setBackgroundImage:[UIImage imageNamed:@"bg_fade.png"] forBarMetrics:UIBarMetricsDefault];
UINavigationItem *item = [[UINavigationItem alloc]initWithTitle:@"Tray Tracker"];
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:
@selector(leftAction:)];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action:
@selector(saveAction:)];
item.leftBarButtonItem = leftButton;
item.rightBarButtonItem = rightButton;
navbar.items = @[item];
[self.view addSubview:navbar];
我确实有针对leftAction和saveAction的IBActions
答案 0 :(得分:1)
如果您只想要一个带有两个按钮的栏,则应使用UIToolbar。对于这个简单的案例,处理起来要容易得多。您需要的唯一更改是创建一个UIBarButtonItem flexibleSpace(它是一个系统项),并调用[toolbar setItems:@[leftButton, flexibleSpace, rightButton]];
如果您需要实际的导航功能,例如后退按钮,请查看此答案。您需要使用UINavigationBar pushNavigationItem。
using UINavigationBar without UINavigationController
在您的示例中,您滥用items属性。 UINavigationBar的文档说明,
The bottom item is at index 0, the back item is at index n-2,
and the top item is at index n-1, where n is the number of items in the array.
为了完成你想要用UINavigationBar做的事情,我认为你需要多个navigationItems。
使用UIToolbar或将UINavigationBar与UINavigationController结合使用会更容易。
修改强> 现在您发布了图像,我认为您无法看到正确的条形按钮的原因是因为您的框架宽度太大。 iPhone屏幕宽度为320像素,因此navigationBar的框架应为CGRectMake(0,0,320,44)