1

语境

  • 该应用程序正在使用 UINavigationController 范例
  • 我有一个名为“UIViewController”的子类:QuestionViewController
  • 然后我有一个 viewController 子类 QuestionViewController 称为:QuestionMultipleChoiceViewController
  • 在 QuestionViewController 我有一个公共方法,称为:returnBarButtonItems返回一个 NSArray
  • 在 QuestionMultipleChoiceViewController 我将 self.toolbarItems 属性设置为 returnBarButtonItems 返回的数组
  • 动作在超类中 - QuestionViewController

代码

问题视图控制器:

-(NSArray*)returnBarButtonItems
{
    self.facebookItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"FacebookIcon.png"] style:UIBarButtonItemStylePlain target:nil action:@selector(facebookAction:)];
    self.leftarrow = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"LeftArrowIcon.png"] style:UIBarButtonItemStylePlain target:nil action:@selector(leftAction:)];
    self.rightarrow = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"RightArrowIcon.png"] style:UIBarButtonItemStylePlain target:nil action:@selector(rightAction:)];
    self.calcItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"CalculatorIcon.png"] style:UIBarButtonItemStylePlain target:nil action:@selector(calculatorAction:)];

    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

    self.items = [NSArray arrayWithObjects:self.facebookItem, flexibleSpace, self.leftarrow, flexibleSpace,flexibleSpace,flexibleSpace,flexibleSpace, self.rightarrow,flexibleSpace, self.calcItem, nil];

    return self.items;
}

问题MultipleChoiceViewController:

self.toolbarItems = [self returnBarButtonItems];

问题

UIBarButtons 设置正确并显示,但按下时不会调用操作。

4

1 回答 1

0

该函数的文档initWithImage:style:target:action:指出:

目标

接收操作消息的对象。

行动

选择此项目时要发送到目标的操作。

在您的情况下,您将其指定nil为目标,导致操作发送到nil,这就是您的方法没有被触发的原因。替换nilself以更正问题。

于 2013-04-25T20:51:39.357 回答