我在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;
}
我第一次创建视图控制器并按下它时,按钮可以工作,但是当创建一个全新的视图控制器并将其推送到导航堆栈时,它会中断。有任何想法吗?我已经彻底调试了这个并且没有想法。
答案 0 :(得分:1)
代码的类别部分似乎没有任何问题。我怀疑这个错误可能源于别的东西。一些更多的信息或代码可能在这里有所帮助......你是什么意思休息等 在将ViewController推入堆栈之前,请检查初始化ViewController的方式,如果使用outlet,可能是一个简单的语法错误或错误的nib名称。