我必须在每个ViewController中创建一个相同的按钮。所以我决定写一个具有此功能的类一次。我创建了一个类名 MyUtils ,并向UINavigationItem添加了一个后退按钮,它显示正确,但不知道如何在该类中添加事件。
显示准确但不执行任何事件。我的意思是popViewControllerAnimated:YES
我将myUtil称为
MyUtil *utils = [[MyUtil alloc] init];
[utils NavAndBackBtn:self.navigationItem];
MyUtil.m
-(void)NavAndBackBtn:(UINavigationItem *)nav
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setImage:[UIImage imageNamed:@"icon_back.png"] forState:UIControlStateNormal];
//[btn setTarget:self action:@selector(popView) forControlEventTouchUPInside];
[button setFrame:CGRectMake(0,0,36,20);
UIBarButtonItem *barbtn = [[UIBarButton alloc] initWithCustomView:btn];
nav.leftBarButtonItem = barbtn;// this gives error
}
-(void)popView
{
// [self.navigationController popViewControllerAnimated:YES]; //not working no method in self
}
但是我不知道如何在MyUtil类中向popViewControllerAnimated:YES
添加事件。因为我没有那里的自我参考。
popView方法
必须有办法获得班级的背景。我是指这堂课的自我。并代表它添加事件。并且没有UINavigationItem的方法,它将是popViewController。
简单的话
我只想在我在MyUtils中创建的那个按钮上发生popViewController
事件。但它必须在MyUtils
类中实现。我怎么能在另一个类中使用popViewControllerAnimated。
答案 0 :(得分:1)
-(void)showBackBarButton:(UIViewController*)controller{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundColor:[UIColor redColor]];
[btn setTitle:@"Back" forState:UIControlStateNormal];
[btn addTarget:controller.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
[btn setFrame:CGRectMake(0,0,36,30)];
UIBarButtonItem *barbtn = [[UIBarButtonItem alloc] initWithCustomView:btn];
controller.navigationItem.leftBarButtonItem=barbtn;
}
在ViewDiDLoad
[utils showBackBarButton:self];