0

私のアプリでは、NavigationController でカスタム UINavigationBar とカスタム UIBarButtonItems を使用しています。私の (カスタム) NavigationBar は問題ないように見えますが、独自の backBarButtonItem と RightBarButtonItem を配置しようとするとうまくいきません。

独自の backBarButtonItem のインストールがまったく機能しません (PushViewController メソッドの後)。私はこのコードを使用します:

    UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom];  
    UIImage *homeImage = [UIImage imageNamed:@"Topbarback"];

    [home setBackgroundImage:homeImage forState:UIControlStateNormal];  

    home.frame = CGRectMake(0, 0, 51, 30);  
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc]  
                                     initWithCustomView:home];  


    [self.navigationItem setBackBarButtonItem:backButton];

また、独自の rightBarButtonItem もあります。NavigationBar で取得できますが、実行したいメソッドを呼び出していません。そのための私のコードは次のとおりです。

    UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom];  
    UIImage *homeImage = [UIImage imageNamed:@"Topbarback"];

    [home setBackgroundImage:homeImage forState:UIControlStateNormal];  

    home.frame = CGRectMake(0, 0, 51, 30);  
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]  
                                     initWithCustomView:home];  
    // self.navigationItem.backBarButtonItem = cancelButton;  

    [self.navigationItem setBackBarButtonItem:cancelButton];

結果のない解決策をインターネットで数時間探した後、皆さんが私を助けてくれることを願っています!

ありがとう!

編集:申し訳ありませんが、最後の号に間違ったコードを投稿しました:

UIButton *home2 = [UIButton buttonWithType:UIButtonTypeCustom];  
[home2 setTitle:@"Sort" forState:UIControlStateNormal];
[home2.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]];

UIImage *homeImage2 = [UIImage imageNamed:@"Topbarbutton"];

[home2 setBackgroundImage:homeImage2 forState:UIControlStateNormal];  

home2.frame = CGRectMake(0, 0, 77, 30);  
UIBarButtonItem *cancelButton2 = [[UIBarButtonItem alloc]  
                                 initWithCustomView:home2];
[cancelButton2 setTarget:self];
[cancelButton2 setAction:@selector(sorteren)];



self.navigationItem.rightBarButtonItem = cancelButton2;
4

2 に答える 2

0

UIViewControllerbackBarButtonItemで設定すると問題が発生しますが、そのビューが表示されている場合は表示されず、そのビューが戻る場合にのみ表示されます。

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


また、メソッドが呼び出されないようにするには、@selectorを呼び出すように設定する必要があります

このメソッドを使用してボタンを作成できます

- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action

編集
戻るボタンの場合
UIButtonを作成しないで、UIBarButtonに直接移動します。
これがbackBarButtonItemを作成する方法です。

UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Maison.png"]
                                                        style:UIBarButtonItemStylePlain
                                                       target:nil
                                                       action:nil];
self.navigationItem.backBarButtonItem = bbi;
[bbi release], bbi = nil;
于 2011-12-30T20:36:29.917 に答える
0

うーん、下のツールバーにボタンを追加したいですか?それがあなたがそれを行う方法です:

UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"Title" target:self action:@selector(myButtonClicked:)];
    [toolbar setItems:[NSArray arrayWithObjects:myButton, nil]];
于 2011-12-30T20:28:19.467 に答える