我在屏幕上有一个自定义的UINavigationBar,即没有导航控制器,如下面所定义,它包含一个带有标题为“Media”的后退按钮和动作“mediaViewComplete”。但是,点击按钮时不会调用mediaViewComplete方法。如何为“后退”按钮指定操作?
self.navigationBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 44)];
navigationBar.barStyle=UIBarStyleBlackTranslucent;
UINavigationItem *navigationItem=[[UINavigationItem alloc]init];
UIBarButtonItem *backButton=[[UIBarButtonItem alloc]initWithTitle:@"Media" style:UIBarButtonItemStylePlain target:self action:@selector(mediaViewComplete)];
navigationItem.backBarButtonItem=backButton;
[self.navigationBar pushNavigationItem:navigationItem animated:NO];
navigationItem=[[UINavigationItem alloc]init];
UIBarButtonItem *editButton=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editCategorization)];
navigationItem.rightBarButtonItem=editButton;
[self.navigationBar pushNavigationItem:navigationItem animated:NO];
[self.view addSubview:navigationBar];
[editButton release];
[backButton release];
[navigationItem release];
答案 0 :(得分:1)
问题在于你正在使用:
navigationItem.backBarButtonItem = backbutton;
backBarButtonItem有自己的事件,不会被你的action:option覆盖。实际上,Apple指南声明您应该使用“nil”作为backBarButtonItem的操作。 backBarButtonItem不归当前视图控制器所有。
如果您不关心按钮的箭头形状,则应使用leftBarButtonItem。如果你想创建具有箭头形状的完全自定义后退按钮,你将不得不做一些自定义魔术。幸运的是,大部分工作都是为您完成的:
下载此项目并查看结果。它甚至包含保留箭头形状自定义后退按钮所需的图像。这是更多的工作,但它更少黑客。