0

我在 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;
}

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

4

1 回答 1

1

您的代码的类别部分似乎没有任何问题。我怀疑该错误可能源于其他原因。一些更多的信息或代码可能会有所帮助......你所说的break等是什么意思。在将ViewController推入堆栈之前检查初始化ViewController的方式,如果使用插座,可能是简单的语法错误或错误的笔尖名称。

于 2013-05-30T02:36:25.010 回答