ios - right - UIBarButtonItem Vista personalizada en UINavigationBar
uibarbuttonitem swift 4 (3)
Lo logré usando el siguiente código:
UIButton *nxtBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[nxtBtn setImage:[UIImage imageNamed:@"chk_next.png"] forState:UIControlStateNormal];
[nxtBtn addTarget:self action:@selector(NextBtn) forControlEvents:UIControlEventTouchUpInside];
[nxtBtn setFrame:CGRectMake(0, 0, 64, 31)];
UIBarButtonItem *nextButton = [[UIBarButtonItem alloc] initWithCustomView:nxtBtn];
checkIn_NavBar.topItem.rightBarButtonItem=nextButton;
Estoy haciendo una barra de botones personalizada para uinavigationbar, estoy usando el siguiente código
UIImageView *backImgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chk_back.png"]]; [backImgView setUserInteractionEnabled:YES];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backImgView];
[backButton setTarget:self];
[backButton setAction:@selector(BackBtn)];
checkIn_NavBar.topItem.leftBarButtonItem = backButton;
El problema es que no está llamando a su acción. que estoy haciendo mal?
De la documentación de Apple:
Inicializa un nuevo elemento utilizando la vista personalizada especificada.
- (id)initWithCustomView:(UIView *)customView
Parámetros customView Una vista personalizada que representa el elemento. Valor de retorno Artículo recién inicializado con las propiedades especificadas.
Discusión: El elemento del botón de barra creado por este método no llama al método de acción de su objetivo en respuesta a las interacciones del usuario. En su lugar, el elemento del botón de la barra espera que la vista personalizada especificada maneje las interacciones del usuario y proporcione una respuesta adecuada.
Solución: "Cree un botón con su imagen de fondo (configure la acción en este botón) e inicie el botón de la barra con este botón". Por ejemplo:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0,0,25,25)
[btn setBackgroundImage:[UIImage imageNamed:@"chk_back.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(BackBtn) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:btn];
UIBarButtonItem *graphButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"GraphButton.png"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(graphButton)];
self.navigationItem.rightBarButtonItem = graphButton;
- (void)graphButton{
}