我想通过向rightBarButtonItem添加一个自定义按钮来自定义导航栏。创建一个非常简单。将操作和目标添加到自定义导航BarButtonItem?
UIImage *myImage = [UIImage imageNamed:@"menu-icon.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setFrame:CGRectMake(0, 0, myImage.size.width, myImage.size.height)];
[myButton setBackgroundImage:myImage forState:UIControlStateNormal];
UIBarButtonItem *myButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];
[navItem setLeftBarButtonItem:myButtonItem animated:YES];
看起来不错,除了现在我无法设置目标或操作属性。下面的代码什么也不做:
myButtonItem.target = myTarget;
myButtonItem.action = @selector(myButtonAction);
我发现它不工作的原因是因为我与-initWithCustomView初始化的UIBarButtonItem。苹果文档说:
该方法创建的条形按钮项目不会响应用户交互调用其目标的动作方法。相反,酒吧按钮项目期望指定的自定义视图来处理任何用户交互并提供适当的响应。
我有点困惑,究竟苹果是什么意思。我应该创建一个自定义控件或什么?我还没有真正做到这一点,我不知道从哪里开始。
有没有人有任何建议如何做到这一点或另一种方式来设置自定义导航栏按钮?
回答-------------------------------------------- --------------
刚把这个方法添加到UIButton的:
[myButton addTarget:myTarget action:@selector(myButtonAction) forControlEvents:UIControlEventTouchUpInside];
谢谢,没有意识到它是那么简单。 – DJSK