Quitar la flecha hacia atrás en iOS7

Quiero incorporar una costumbre botón en la parte trasera soy capaz de obtener el resultado anterior utilizando

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-btn"] style:UIBarButtonItemStylePlain target:nil action:nil];

pero ¿cómo se puede eliminar el nativo botón azul?

InformationsquelleAutor daidai | 2013-12-12

8 Comentarios

  1. 13

    Utilizar el siguiente código para ocultar la flecha de retroceso:

    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-btn"]
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:nil
                                                                            action:nil];
    
    if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) {
        [[UINavigationBar appearance] setBackIndicatorImage:[[UIImage alloc] init]];
        [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[[UIImage alloc] init]];
    }
    • Que elimina todas las flechas, pero agrega la «Espalda» de texto.
    • si has añadido el backbarbuttonitem, entonces no se mostrará ningún «Atrás» de texto
  2. 10

    En iOS7+ puede utilizar navigationBar del backIndicatorImage y backIndicatorTransitionMaskImage para lograr la costumbre de flecha que desee. Código Swift de abajo:

    self.navigationController?.navigationBar.backIndicatorImage = UIImage(named:"button-backArrow18x15")
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named:"button-backArrowMask18x15")

    Si quieres ocultar el «regreso» de texto puede establecer el title de la vista anterior a ser un solo espacio «» o usar un custom UIBarButtonItem que no tiene un título.

    • Usted probablemente necesitará utilizar UIImage(named: "back-arrow")?.withRenderingMode(.alwaysOriginal) para representar la imagen original.
  3. 4

    Puede ocultar backbutton

     self.navigationItem.hidesBackButton=YES;

    Para crear leftbarbutton usted puede utilizar esta:

    UIButton* someButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [someButton setFrame:frame];
    [someButton setBackgroundImage:@"youArroImageName" forState:UIControlStateNormal];
    [someButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
    [someButton setShowsTouchWhenHighlighted:YES];
    UIBarButtonItem* someBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:someButton];
    [self.navigationItem setLeftBarButtonItem:someBarButtonItem];
    • Que oculta completamente, quiero mostrar la costumbre (flecha blanca).
    • Para que usted tiene que crear Custon LeftBarButton elemento. Y se establece como izquierda botón de la barra de punto.
    • Yo addded añadido código para crear leftebarbuttonitem.
  4. 3

    Comprobar esta:

        UIImage *faceImage = [UIImage imageNamed:@"back_arrow.png"];
        UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom];
        face.bounds = CGRectMake( 10, 0, faceImage.size.width, faceImage.size.height );
        [face addTarget:self action:@selector(handleBack:) forControlEvents:UIControlEventTouchUpInside];
        [face setImage:faceImage forState:UIControlStateNormal];
        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:face];
        self.navigationItem.leftBarButtonItem = backButton;
        [self.navigationItem setHidesBackButton:YES animated:YES];
        [self.navigationItem setBackBarButtonItem:nil];
    
    
      -(IBAction)handleBack:(id)sender
      {
         //   [self dismissViewControllerAnimated:YES completion:nil];
         [self.navigationController popViewControllerAnimated:YES];
      }
    • Que quita el botón atrás. Quiero mostrar una costumbre de flecha.
    • verificación de editar mi respuesta.
    • Realmente es más sencillo de lo que me he encontrado, a ver mi respuesta
    • he tomado como customizeview así se puede establecer el fotograma o unido, pero también en su código que no es.
  5. 3

    Gracias a todos los ms responden encontrado una manera más sencilla de hacerlo…

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-btn"] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonAction:)];
    self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
    
    [self.navigationItem setHidesBackButton:YES animated:NO];
    [self.navigationItem setBackBarButtonItem:nil];
    
    -(void) backButtonAction:(id)sender
    {
        [self.navigationController popViewControllerAnimated:YES];
    }
    • Vale la pena señalar que perderá su pop gesto con este método
    • También vale la pena señalar que este está haciendo algo completamente diferente. Se establece el botón atrás de la parte superior del controlador, en lugar de que el controlador de donde es volver a. Usted tendría que hacer esto para cualquier controlador que estaba en la parte superior…
  6. 0

    ¿Por qué no intentar con la Costumbre UIButton :

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        [btn setFrame:CGRectMake(0.0f, 0.0f, 25.0f, 40.0f)];
        [btn addTarget:self action:@selector(buttonEN:) forControlEvents:UIControlEventTouchUpInside];
        [btn setImage:[UIImage imageNamed:@"back-btn"] forState:UIControlStateNormal];
        UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithCustomView:btn];
        self.navigationItem.backBarButtonItem = backBtn;
  7. 0

    Yo sólo enfrentan el mismo problema, he aquí lo que terminé haciendo:

    //First set the back button text to an empty string
    viewController.navigationItem.backBarButtonItem = 
         [[UIBarButtonItem alloc] initWithTitle:@"" 
              style:UIBarButtonItemStylePlain 
              target:nil 
              action:nil];
    
    //Set the back-indicator image to the custom image (scaled to 20x20)
    UIImage *img = [MyUtils imageWithImage:[UIImage imageNamed:@"back"] scaledToSize:CGSizeMake(20, 20)];
    [[UINavigationBar appearance] setBackIndicatorImage:img];
    [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:img];
    
    //Set the tint color to WHITE
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

    Aquí está la imagen de escala de método:

    + (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
        UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
        [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }

    De crédito para la ampliación método anterior va a Paul Lynch en este ASÍ que la pregunta: (La forma más sencilla de cambiar el tamaño de un UIImage?)

  8. 0

    Swift 4 (si usted sólo quiere ocultar)

    let mask = UIImage()
    navigationController?.navigationBar.backIndicatorImage = mask
    navigationController?.navigationBar.backIndicatorTransitionMaskImage = mask

Dejar respuesta

Please enter your comment!
Please enter your name here