UIBarButtonItem *doneitem=[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(donePressed:)]autorelease];
    self.navigationItem.rightBarButtonItem=doneitem;

Este es el código de mi aplicación, es necesario agregar una imagen en este botón ?

Por favor me ayude.

12 Comentarios

  1. 80

    Prueba este código:

    UIImage* image3 = [UIImage imageNamed:@"mail-48_24.png"];
    CGRect frameimg = CGRectMake(0, 0, image3.size.width, image3.size.height);
    UIButton *someButton = [[UIButton alloc] initWithFrame:frameimg];
    [someButton setBackgroundImage:image3 forState:UIControlStateNormal];
    [someButton addTarget:self action:@selector(sendmail)
         forControlEvents:UIControlEventTouchUpInside];
    [someButton setShowsTouchWhenHighlighted:YES];
    
    UIBarButtonItem *mailbutton =[[UIBarButtonItem alloc] initWithCustomView:someButton];
    self.navigationItem.rightBarButtonItem=mailbutton;
    [someButton release];
    • Funciona muy bien pero cuando hago clic en el Botón de la aplicación se bloquee y simulador de salir de repente.
    • ¿Cómo puedo hacerlo y no perder la Secuencia de acción definido para el Botón en el guión?
    • Renato: Dar el pase a un nombre y llame a [self performSegueWithIdentifier:@"yourSegueName" sender:self]; en el botón de acción objetivo.
  2. 53
     UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"XXXXXXX.png"] 
                                                      style:UIBarButtonItemStylePlain 
                                                      target:self 
                                                      action:@selector(yourMethod)];
    
    self.navigationItem.rightBarButtonItem=_btn;
    • Es difícil de creer que esta respuesta se obtiene pocos votos
    • Sólo necesitan medidas Botón
    • Totalmente de acuerdo con @onmyway133. Muy simple y útil respuesta.
    • cierto, esto hace que la cosa sea mucho más fácil.
  3. 6

    Por favor, pruebe este código :

    UIButton *btnNext1 =[[UIButton alloc] init];
    [btnNext1 setBackgroundImage:[UIImage imageNamed:@"btnNext.png"] forState:UIControlStateNormal];
    
    btnNext1.frame = CGRectMake(100, 100, 50, 30);
    UIBarButtonItem *btnNext =[[UIBarButtonItem alloc] initWithCustomView:btnNext1];
    [btnNext1 addTarget:self action:@selector(nextButtonClicked) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.rightBarButtonItem = btnNext;
  4. 5
    UIButton *urButton = [UIButton buttonWithType:UIButtonTypeCustom];
    urButton.frame = urRequiredFrame;
    [urButton setImage:urImage forState:UIControlStateNormal];
    [urButton addTarget:self action:@selector(donePressed:)
         forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithCustomView:urButton];
    self.navigationItem.rightBarButtonItem=doneButton;
    • urRequiredFrame; ???? urImage ???
    • urRequiredFrame es el fotograma que desea que el botón de estar y urImage es el de la imagen que deseas como la de la imagen para el botón
    • +1 es útil para mí..
  5. 5

    En caso de que alguien necesita código Swift aceptado respuesta:

    let infoImage = UIImage(named: "my-icon-32.png")
    let imgWidth = infoImage?.size.width
    let imgHeight = infoImage?.size.height
    let button:UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: imgWidth!, height: imgHeight!))
    button.setBackgroundImage(infoImage, forState: .Normal)
    button.addTarget(self, action: Selector("openInfo"), forControlEvents: UIControlEvents.TouchUpInside)
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)

    P. S. Gurpreet Singh respuesta está trabajando sólo para PNG transparente también tengo que configurar el botón de tintcolor otros que clearColor.

  6. 3

    He aquí lo que funciona para mí. He encontrado 30×30 para ser un buen tamaño para el botón en la barra de navegación. El UIImage escalas para el botón de tamaño de forma automática.

    UIImage *image = [UIImage imageNamed:@"XXXXXXXXXX"];
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button addTarget:self action:@selector(someAction) forControlEvents:UIControlEventTouchUpInside];
    button.adjustsImageWhenHighlighted = NO;
    UIBarButtonItem *rightButton =[[UIBarButtonItem alloc] initWithCustomView:button];
    self.navigationItem.rightBarButtonItem = rightButton;
  7. 3

    En Swift

    Otra solución utilizando withRenderingMode(UIImage.RenderingMode.alwaysOriginal) método a continuación:

    let img = UIImage(named: "picture")!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
    let leftBarButtonItem = UIBarButtonItem(image: img, style: UIBarButtonItem.Style.plain, target: self, action: nil)
    self.navigationItem.leftBarButtonItem = leftBarButtonItem
  8. 0
    [doneItem setImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];
    • genera error en el hecho de elemento
  9. 0

    Una manera simple :

    UIImage* customImg = [UIImage imageNamed:@"custom-img.png"];
    
    UIBarButtonItem *_customButton = [[UIBarButtonItem alloc] initWithImage:customImg style:UIBarButtonItemStyleDone target:nil action:nil];
    
    self.navigationItem.rightBarButtonItems = [[NSArray alloc] initWithObjects:_customButton, nil];

    Entonces, si usted necesita más de un botón, usted puede apenas y otro UIBarButtonItem a initWithObjects.

  10. 0

    Hacer esto. Es la manera más simple.

    1. Poner el archivo de imagen en el directorio de proyecto

    2. Agregar el archivo a Xcode (clic Derecho sobre el proyecto de Xcode, añadir archivos a «Nombre del Proyecto»)

    3. Seleccione su UIBarButtonItem en el Guión gráfico

    4. Haga clic en «Imagen» y encontrar su imagen (Ver Captura de pantalla)

    5. Celebrar, porque va a funcionar a la perfección y no requiere de código innecesario.

    Cómo agregar una imagen personalizada en la barra de navegación elemento de botón?

    • Lo hice y mi imagen se muestra un plano rectángulo azul no la imagen que he seleccionado de mi proyecto. Alguna idea?
    • Para responder a mi propio comentario, yo no tengo la alfa configurado correctamente en el .archivo de imagen png, he tenido que modificar con GIMP para establecer el color blanco a la alfa.
    • ¿cómo se puede proporcionar dos imágenes separadas de esta manera para la seleccionado/no seleccionado los estados
  11. 0

    A recoger en el respuesta por Gurpreet Singh. Para mantener el actual estado de las existentes en el botón de re-uso, el destino y la acción.

    SEL selector = self.navigationItem.rightBarButtonItem.action;
    id target = self.navigationItem.rightBarButtonItem.target;
    UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"icon_close.png"]
                                                          style:UIBarButtonItemStylePlain
                                                         target:target
                                                         action:selector];
    
    self.navigationItem.rightBarButtonItem = _btn;
  12. 0
       let sliderImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 30))
        sliderImageView.contentMode = .ScaleAspectFit
        sliderImageView.image = UIImage(named: "sliderMenu")
    
        OR
    
        var sliderImage = UIImage(named: "sliderMenu")
        navigationItem.leftBarButtonItem?.image = sliderImage

Dejar respuesta

Please enter your comment!
Please enter your name here