在另一个类中处理popViewControllerAnimated类似的事件?

时间:2014-09-17 10:21:33

标签: objective-c uinavigationcontroller uinavigationitem

我必须在每个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。

1 个答案:

答案 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];