我正在尝试通过向 rightBarButtonItem 添加自定义按钮来自定义导航栏。创建一个非常简单。
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];