UIBarButtonItem在显示两次后没有触发选择器

时间:2013-05-30 00:17:38

标签: ios uiviewcontroller uinavigationbar uibarbuttonitem uicontrol

我在UIBarButtonItem上使用此类别方法来创建自定义按钮,如下所示:

+ (UIBarButtonItem*)itemWithImage:(UIImage*)image forState:(UIControlState)controlState target:(id)target action:(SEL)action{

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:image forState:controlState];

    button.frame= CGRectMake(0.0, 0.0, 44, 44);
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 44, 44) ];
    [v addSubview:button];

    return [[UIBarButtonItem alloc] initWithCustomView:button];
}

然后我创建按钮并将它们分配给视图控制器中的导航项,如下所示:

-(void)viewDidLoad{
    [super viewDidLoad]; 
    UIBarButtonItem * cancelButtonItem = [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"Cancel"] forState:UIControlStateNormal target:self action:@selector(cancel)];
    self.navigationItem.leftBarButtonItem = cancelButtonItem;

    UIBarButtonItem * checkmarkButtonItem = [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"checkmark_active"] forState:UIControlStateNormal target:self action:@selector(done)];
    self.navigationItem.rightBarButtonItem = checkmarkButtonItem;
}

我第一次创建视图控制器并按下它时,按钮可以工作,但是当创建一个全新的视图控制器并将其推送到导航堆栈时,它会中断。有任何想法吗?我已经彻底调试了这个并且没有想法。

1 个答案:

答案 0 :(得分:1)

代码的类别部分似乎没有任何问题。我怀疑这个错误可能源于别的东西。一些更多的信息或代码可能在这里有所帮助......你是什么意思休息等 在将ViewController推入堆栈之前,请检查初始化ViewController的方式,如果使用outlet,可能是一个简单的语法错误或错误的nib名称。