環境
- アプリは UINavigationController パラダイムを使用しています
- 「UIViewController」をサブクラス化するクラスがあり、QuestionViewControllerと呼ばれます。
- 次に、QuestionViewController をサブクラス化する viewController を呼び出します。QuestionMultipleChoiceViewController
- QuestionViewController には、NSArray を返すreturnBarButtonItemsというパブリック メソッドがあります。
- QuestionMultipleChoiceViewController で、self.toolbarItems プロパティを returnBarButtonItems によって返される配列に設定します
- アクションはスーパークラスにあります - QuestionViewController
コード
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;
}
QuestionMultipleChoiceViewController:
self.toolbarItems = [self returnBarButtonItems];
問題
UIBarButtons は正しく設定され、表示されますが、アクションは押されても呼び出されません。