如何添加一个正确的酒吧button到iPhone导航栏

我想添加一个正确的酒吧button项目导航栏,以便点击,它执行一定的function。

我已经创build了以下代码来添加正确的barbutton项,但是完成后,barbutton项不会显示在导航栏中:

-(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]; } 

 -(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]; } 

尝试其他的答案。 我发布这个答案,以便它将工作,如果你的viewcontroller没有导航控制器,我认为是问题。

假设你有一个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)]; 

使用您自己的viewcontroller而不是navigationcontroller来引用navigationItem。

在viewdidload中添加此代码

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

这里的大部分答案都是在新VC中显示UINavigationBar的rightBarButtonItem。 我的需要,这实际上是由János回答的,是从CALLING UIViewController中设置UINavigationItem项目。 因此,下面的代码(谢谢,亚诺斯)。

//从内部(也称为调用控制器):

  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]; 

现在可以肯定的是,对于雅诺斯的回答来说,这看起来可能是多余的,但是我需要更多的回应点来标记他的回应。 😉

我想这将是更完整的回应,它应该在任何情况下帮助:

 -(void)viewDidLoad{ //Set Navigation Bar UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)]; //Set title if needed UINavigationItem * navTitle = [[UINavigationItem alloc] init]; navTitle.title = @"Title"; //Here you create info button and customize it UIButton * tempButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; //Add selector to info button [tempButton addTarget:self action:@selector(infoButtonClicked) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem * infoButton = [[UIBarButtonItem alloc] initWithCustomView:tempButton]; //In this case your button will be on the right side navTitle.rightBarButtonItem = infoButton; //Add NavigationBar on main view navBar.items = @[navTitle]; [self.view addSubview:navBar]; } 
 UIBarButtonItem *add=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addUser)]; self.navigationItem.rightBarButtonItem=add; [add release]; 

使用下面的代码:

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

希望这可以帮助你。

请享用!

 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]; } 

迅速:

 let rightButton = UIBarButtonItem(image: UIImage(named: "imageName"), style: .plain, target: self, action: #selector(buttonTapped)) navigationItem.setRightBarButton(rightButton, animated: false) func settingsButtonTapped() { // Implement action }