我正在尝试使用设置页面创建一个应用程序,就像IOS的原生设置应用程序一样。但是我无法找到如何创建左尖的UIBarButton。基本上我想在导航栏顶部有一个左指针按钮,你可以设置为调用一个函数。我正在使用引擎cocos2d,如果这有帮助的话。我正在以编程方式创建整个应用程序。
这是我创建UINavigationBar的代码......
UINavigationBar *naviBarObj = [[[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)] autorelease];
[[[CCDirector sharedDirector] openGLView] addSubview:naviBarObj];
[naviBarObj release];
UINavigationItem *item = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease];
UIBarButtonItem *back = [[[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(back)] autorelease];
item.leftBarButtonItem = back;
[naviBarObj setItems:[NSArray arrayWithObjects:item, nil] animated:YES];
虽然这会创建一个方形后退按钮。
我的目标是创造这样的东西
我知道UINavigationItem
UINavigationItem *back2 = [[[UINavigationItem alloc] initWithTitle:@"Settings"] autorelease];
[naviBarObj setItems:[NSArray arrayWithObjects:back,item, nil] animated:YES];
将创建该效果,但不幸的是我目前没有使用UINavigationController类。这一切都是在CCLayer中完成的。
谢谢!!
答案 0 :(得分:2)
一种方法是使用自定义背面图像,但这会很乏味。
另一种方式就像您在上一部分中提到的那样,创建另一个“虚拟”上一个导航项目,其标题设置为您想要在后退按钮上的文本,然后将这两个项目添加到UINavigationBar
UINavigationItem *item = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease];
UINavigationItem *back2 = [[[UINavigationItem alloc] initWithTitle:@"Settings"] autorelease];
[naviBarObj setItems:[NSArray arrayWithObjects:back2,item, nil] animated:YES];
但是我不认为你需要一个UINavigationController来实现这些。为了处理你的后退按钮事件,我想你可以尝试让你的CCLayer成为UINavigationBar的代表,即。 UINavigationBarDelegate:
@interface MyLayer : CCLayer <UINavigationBarDelegate> {
}
然后将UINavigationBar的委托设置为该层:
naviBarObj.delegate = self;
最后实现didPopItem以在单击按钮时收到事件通知:
- (void) navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item
{
[self back]; // or whatever
}
让我知道这是否有效。