2

ルートViewControllerと詳細ViewControllerがあります。detailedViewController にプッシュすると、ルートからのタイトルで leftBarButtonItem を取得します。しかし、タイトルは「戻る」だけにしたいのですが、それ以上はありません。では、どうやってそれを行うのですか?

これは役に立たない

self.navigationItem.leftBarButtonItem.title = @"Back";

オン タイプの barButtonItem (たとえば、左矢印付きの 104) を作成し、それを leftBarButtonItem に設定するのは、ひどい決断です。

プッシュする前に rootViewController のタイトルを手動で変更する以外の方法はありますか?

4

4 に答える 4

7

Appleのドキュメントから:

backBarButtonItem

ナビゲーションバーに戻るボタンが必要な場合に使用するバーボタンアイテム。

@property(nonatomic、retain)UIBarButtonItem*backBarButtonItemディスカッション

このナビゲーションアイテムがスタックの一番上のアイテムのすぐ下にある場合、ナビゲーションコントローラーはこのナビゲーションアイテムからナビゲーションバーの戻るボタンを取得します。このプロパティがnilの場合、ナビゲーションアイテムはそのtitleプロパティの値を使用して、適切な戻るボタンを作成します。戻るボタンにカスタム画像またはタイトルを指定する場合は、代わりにカスタムバーボタンアイテム(カスタムタイトルまたは画像を含む)をこのプロパティに割り当てることができます。バーボタンアイテムを構成するときは、カスタムビューを割り当てないでください。ナビゲーションアイテムは、とにかく戻るバーボタンのカスタムビューを無視します。

したがって、barButtonItem(例)を作成– initWithTitle:style:target:action:してそのプロパティに割り当てることができます。

さらに、UIBarButtonItem(左または右)のカスタム画像が必要な場合は、次のようなカテゴリ拡張を作成することをお勧めします。

//UIBarButtonItem+Extension.h    
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action;

//UIBarButtonItem+Extension.m    
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
    button.titleLabel.textAlignment = UITextAlignmentCenter;

    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button setTitle:title forState:UIControlStateNormal];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

    return [barButtonItem autorelease];    
}

そしてそれを

UIBarButtonItem* backBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"YoutImageName"] title:@"YourTitle" target:self action:@selector(doSomething:)];
于 2012-02-26T11:38:33.980 に答える
1
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] init];
backButtonItem.title = NSLocalizedString(@"Back", nil);
self.navigationItem.backBarButtonItem = backButtonItem;
于 2012-02-26T12:33:49.680 に答える