私は iOS 7 を使用しており、ナビゲーション コントローラーの 1 つで、何らかの理由でカスタムの戻るボタン (戻る矢印の画像とその横にテキストがある) を leftBarButtonItem として使用する必要がありました。iOS 7 では、アクション シートまたはアラートが画面に表示されると、左右のバー項目ボタンがフェードアウトします。しかし、カスタム ボタンではテキストのみがフェードアウトし、戻る矢印ボタンでは特別な処理を行う必要があります。これを行う直接的な方法はありますか:
これが私のコードです:
カスタムボタンの追加(PS:何らかの理由でカスタムボタンを使用する必要があります):
- (void)showCustomBackButton {
UIButton *aCustomBackButton = [UIButton buttonWithType:101];
[aCustomBackButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[aCustomBackButton setTitle:@"Back" forState:UIControlStateNormal];
UIImage *backArrow = [UIImage imageNamed:@"backArrowImage"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:@"backArrow"];
[imageView setFrame:CGRectMake(kScreenOrigin, topMargin, backArrow.size.width, backArrow.size.height)];
[aCustomBackButton addSubview:imageView];
UIBarButtonItem *aNegativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
aNegativeSpacer.width = -8.0;
UIBarButtonItem *aLeftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aCustomBackButton];
aLeftBarButtonItem.tag = 100;
self.navigationItem.leftBarButtonItems = @[aNegativeSpacer, aLeftBarButtonItem];
}
- (void)showCustomBackButtonFaded {
UIBarButtonItem *aBarButtonItem = [self.navigationItem.leftBarButtonItems lastObject];
if (aBarButtonItem && aBarButtonItem.tag == 100) {
UIButton *aCustomBackButton = [UIButton buttonWithType:101];
[aCustomBackButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[aCustomBackButton setTitle:@"Back" forState:UIControlStateNormal];
UIImage *backArrow = [UIImage imageNamed:@"fadedBackArrow"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:backArrow];
[imageView setFrame:CGRectMake(kScreenOrigin, topMargin, backArrow.size.width, backArrow.size.height)];
[aCustomBackButton addSubview:imageView];
UIBarButtonItem *aNegativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
aNegativeSpacer.width = -8;
UIBarButtonItem *aLeftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aCustomBackButton];
self.navigationItem.leftBarButtonItems = @[aNegativeSpacer, aLeftBarButtonItem];
}
}