leftBarButtonItem のアクションをスワップしようとしています
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIBarButtonItem *theButton = self.navigationItem.leftBarButtonItem;
// 'UIBarButtonItem' may not respond to 'removeTarget:action:forControlEvents:'
[theButton removeTarget:self action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
// 'UIBarButtonItem' may not respond to 'removeTarget:action:forControlEvents:'
[theButton addTarget:self action:@selector(closeToggle:) forControlEvents:UIControlEventTouchUpInside];
// BUT THIS DOES WORK
[theButton.target performSelector:theButton.action];
}
私が読んだことによると、それはうまくいくはずです-何が間違っていますか?
実際、これは私が理解できないもっと複雑なものへの回避策です。
UINavigation Controller 内にある現在の UIViewController からメッセージを送信したいと考えています。
UINavigationController にはこのボタンがあります
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btnmenu.png"] style:UIBarButtonItemStylePlain target:self.navigationController.parentViewController action:@selector(revealToggle:)];
これは正常に動作します。私が本当にやるべきことは
[self.navigationController.parentViewController closeToggle];
didSelectRowAtIndexPath関数内から、失敗しましたが、[theButton.target performSelector:theButton.action]で同じ効果を達成することができました