26

右バー ボタン項目をナビゲーション バーに追加して、クリックすると特定の機能が実行されるようにします。

右のバー ボタン アイテムを追加する次のコードを作成しましたが、完了後、バー ボタン アイテムがナビゲーション バーに表示されません。

-(void)viewDidload{
    self.navigationItem.rightBarButtonItem = 
    [[[UIBarButtonItem alloc] 
           initWithBarButtonSystemItem:UIBarButtonSystemItemAdd                                                                                                     
                                target:self
                                action:@selector(Add:)] autorelease];    
}

-(IBAction)Add:(id)sender
{
    TAddNewJourney *j=[[TAddNewJourney alloc]init];
    [app.navigationController pushViewController:j animated:YES];
    [j release];
}
4

9 に答える 9

39

次のようなUIViewControllerがあると仮定します。

UIViewController *vc = [UIViewController new];

そして、それをナビゲーションコントローラーに追加しました。

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];

このように、rightBarButtonItemは表示されません

nc.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"xyz" style:UIBarButtonItemStyleDone target:self action:@selector(xyz)];

しかし、このようにそれは表示されます

vc.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"xyz" style:UIBarButtonItemStyleDone target:self action:@selector(xyz)];

NavigationItemを参照するには、navigationcontrollerの代わりに独自のviewcontrollerを使用します。

于 2012-11-10T11:23:21.450 に答える
28
-(void)viewDidLoad
{ 
    [super viewDidLoad];
    app.navigationController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(Add:)] autorelease];
}

-(IBAction)Add:(id)sender
{
    TAddNewJourney *j=[[TAddNewJourney alloc]init];
    [app.navigationController pushViewController:j animated:YES];
    [j release];
}

他の答えを試してください。この回答を投稿して、ビューコントローラーに問題があると思われるナビゲーションコントローラーがない場合に機能するようにしました。

于 2011-04-29T12:43:07.140 に答える
7

このコードをviewdidloadに追加してください

UIBarButtonItem *chkmanuaaly = [[UIBarButtonItem alloc]initWithTitle:@"Calculate" style:UIBarButtonItemStylePlain target:self action:@selector(nextview:)];

self.navigationItem.rightBarButtonItem = chkmanuaaly;
于 2011-04-29T12:41:05.267 に答える
3

ここでの回答のほとんどは、表示後に新しい VC 内から UINavigationBar の rightBarButtonItem を設定することに対処しています。János によって実際に回答された私のニーズは、CALLING UIViewController から UINavigationItem 項目を設定することです。したがって、次のコード (Thanks, János)。

// 自分自身 (呼び出し元のコントローラー) 内から:

    UIViewController *c = [[[UIViewController alloc] init...] autorelease];
    c.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissModalViewControllerAnimated:)] autorelease];
    c.navigationItem.title = @"Title Goes Here";
    UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:c] autorelease];
    nav.navigationBarHidden = FALSE;
    [self presentModalViewController:nav animated:YES];

確かに、これは János の回答には冗長に思えるかもしれませんが、彼の回答をマークアップするには、より多くの担当者ポイントが必要です。;-)

于 2012-12-13T21:48:19.667 に答える
2
UIBarButtonItem *add=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addUser)];
    self.navigationItem.rightBarButtonItem=add;
    [add release];
于 2011-04-29T12:39:51.460 に答える
1

次のコードを使用します。

    UIBarButtonItem *add=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addUser)];
    self.navigationItem.rightBarButtonItem=add;
    [add release];

これがお役に立てば幸いです。

楽しみ!

于 2011-04-29T12:43:30.040 に答える
0
UIButton *dButton=[UIButton buttonWithType:0];
dButton.frame=CGRectMake(50,50,50,50);

[dButton addTarget:self  action:@selector(clickdButton:)
  forControlEvents:UIControlEventTouchUpInside];
[dButton setImage:[UIImage imageNamed:@"iconnavbar.png"]
         forState:UIControlStateNormal];    
dButton.adjustsImageWhenHighlighted=NO;
dButton.adjustsImageWhenDisabled=NO;
dButton.tag=0;
dButton.backgroundColor=[UIColor clearColor];

UIBarButtonItem *RightButton=[[[UIBarButtonItem alloc] initWithCustomView:dButton]autorelease];
self.navigationItem.rightBarButtonItem=RightButton;

その後:

-(IBAction)clickdButton:(id)sender{
    classexample *tempController=[[classexample alloc] init];
    [self.navigationController pushViewController:tempController animated:YES];
    [tempController autorelease];
}
于 2011-05-05T14:52:14.637 に答える