Quiero agregar un derecho de la barra de elemento de botón a la barra de navegación, de modo que al hacer clic, se realiza una determinada función.

He creado el siguiente código para agregar la derecha botón de la barra de punto, pero después de que se realiza, el botón de la barra de elemento no está recibiendo muestra en la barra de navegación:

-(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];
}
InformationsquelleAutor Rani | 2011-04-29

9 Comentarios

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

    Tratar de las otras respuestas. He publicado esta respuesta para que funcione si el viewcontroller no tiene un controlador de navegación que creo que es el problema.

    • he añadido este código pero mi rightbarbutton no es visible
    • UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(Add:)]; app.navigationController.navigationItem.rightBarButtonItem=button; [button release]; probar este
    • esto que he probado funciona correctamente
    • la respuesta es correcta, en lugar de esta.
    • si usted está llamando a un viewcontroller por programmitically por navigationcontroller luego [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addBtnPressed)]];
    • Oops. Debo mapa de mi punto de vista controlador a la vista de navegación controlador en el Guión ? Estoy usando Xcode 8.2 , iOs 10

  2. 39

    Vamos a asumir, tiene un UIViewController, como este:

    UIViewController *vc = [UIViewController new];

    Y la agregó a la navegación de controlador:

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

    De esta manera rightBarButtonItem se NO llegar muestran:

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

    PERO de esta manera aparecerá:

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

    Utilizar su propio viewcontroller en lugar de la navigationcontroller para referirse navigationItem.

    • Sí, este cambio era exactamente lo que necesitaba.
    • Muchas gracias, yo también era de añadir a la navegación actual controlador de…
    • Funciona a la perfección para mí.
  3. 7

    Añadir este código en viewdidload

    UIBarButtonItem *chkmanuaaly = [[UIBarButtonItem alloc]initWithTitle:@"Calculate" style:UIBarButtonItemStylePlain target:self action:@selector(nextview)];
    self.navigationItem.rightBarButtonItem=chkmanuaaly;
    [chkmanuaaly release];
    • he probado este código, pero a mi el botón de la derecha del elemento no es visible en la barra de navegación
    • creo que la barra de navegación no es una parte de la navegación controlador.Se coloca la barra de navegación en xib archivo de controlador de vista?.Si, a continuación, agregar el botón también .xib archivo. Espero que sea de ayuda para usted
  4. 3

    La mayoría de las respuestas aquí ajuste de la dirección de la UINavigationBar del rightBarButtonItem desde dentro de la nueva VC después de que se muestra. Mi necesidad, que en realidad era contestada por János, es establecer la UINavigationItem elementos de la LLAMADA UIViewController. Por lo tanto, el siguiente código (Gracias, János).

    //desde dentro de uno mismo (también conocido como el llamado controlador):

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

    Ahora, por supuesto, esto puede parecer redundante a János respuesta, pero necesito más rep puntos con el fin de marcar su respuesta hasta. 😉

  5. 2

    Supongo que será más completa de la respuesta y debe ayudar en cualquier situación:

    -(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];
    
    }
  6. 1
    UIBarButtonItem *add=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addUser)];
        self.navigationItem.rightBarButtonItem=add;
        [add release];
    • he probado este código, pero a mi el botón de la derecha del elemento no es visible en la barra de navegación
  7. 1

    Utilice el siguiente código:

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

    Espero que esto ayude a cabo.

    Disfrutar!

    • he añadido este código pero mi derecha botón de la barra de elemento no es visible en la barra de navegación
  8. 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;

    y luego:

    -(IBAction)clickdButton:(id)sender{
        classexample *tempController=[[classexample alloc] init];
        [self.navigationController pushViewController:tempController animated:YES];
        [tempController autorelease];
    }
  9. 0

    Swift:

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

Dejar respuesta

Please enter your comment!
Please enter your name here