1. ホーム
  2. objective-c

[解決済み] プログラムによるナビゲーションバーへのボタン追加

2023-03-23 13:45:54

質問

こんにちは、ナビゲーションバーの右側にあるボタンをプログラムで設定し、ボタンを押すと何らかのアクションが実行されるようにしたいのです。 私は、ナビゲーションバー、プログラムによって作成されています。

navBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0,0,320,44) ];

同様に、このナビゲーションバーの右側に、ボタンを追加する必要があります。そのために私は使用しました。

1.

    UIView* container = [[UIView alloc] init];

    // create a button and add it to the container
    UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 130, 44.01)];
    [container addSubview:button];
    [button release];

    // add another button
    button = [[UIButton alloc] initWithFrame:CGRectMake(160, 0, 50, 44.01)];
    [container addSubview:button];
    [button release];

    // now create a Bar button item
    UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithCustomView:container];

    // set the nav bar's right button item
    self.navigationItem.rightBarButtonItem = item;
    [item release];

2.

    UIImage *im;
    im=[UIImage imageNamed:@"back.png"];
    [button setImage:im forState:UIControlStateNormal];
    [im release];
    backButton = [[UIBarButtonItem alloc] initWithCustomView:button];       
    [backButton setImageInsets:UIEdgeInsetsMake(0, -10,5, 5)];
    [self.navigationItem setRightBarButtonItem:backButton];

3.

    UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithTitle:@"button"               style:UIBarButtonItemStylePlain target:self action:@selector(refreshLogsAction:)];
    self.navigationItem.rightBarButtonItem = refreshItem;

    [refreshItem release];

これらの方法をすべて試しましたが、どれも右側にボタンが表示されません。

どのように解決するのですか?

私の UIViewController 派生クラスの内部で、次のように使っています。 viewDidLoad :

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 
                               initWithTitle:@"Flip"                                            
                               style:UIBarButtonItemStyleBordered 
                               target:self 
                               action:@selector(flipView:)];
self.navigationItem.rightBarButtonItem = flipButton;
[flipButton release];

これは右側にFlipというタイトルのボタンを追加し、このメソッドを呼び出します。

-(IBAction)flipView

これはあなたの#3と非常によく似ていますが、私のコード内で動作しています。