iphone - icon - Añadir imagen al botón UIBarButtonItem
ios launch image (7)
He añadido UITabButtonItem en mi controlador de vista con el siguiente código. ¿Podría alguien decirme si es posible asociar la imagen con ella?
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(favouriteButtonClicked:)];
viewController2.navigationItem.rightBarButtonItem = button;
[button release];
[self.navigationController pushViewController:viewController2 animated:YES];
Uso el siguiente código en otros lugares, pero al igual que en el código anterior, estoy colocando viewcontroller en mi vista actual, este código no funciona. Tuve que usar el código anterior.
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(280, 25, 30, 30)];
viewController2.navigationController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
[self.navigationController pushViewController:viewController2 animated:YES];
No sé qué está mal, pero cuando reemplazo este código de botón personalizado con initWithBarButtonSystemItem, ¡funciona bien!
Finalmente resolví este problema y publiqué el código de trabajo aquí, pero aún no entiendo si tengo un botón en baseviewcontroller y lo agrego como el siguiente, ¡no funciona! Tuve que usar el código dado en mi respuesta aceptada en viewwillappear !!
[favButton addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
¡El siguiente código todavía no funciona! No sé qué está pasando.
MPMoviePlayerViewController *videoController = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:filePath]] autorelease];
UIButton* favouritebutton = [UIButton buttonWithType:UIButtonTypeCustom];
[favouritebutton setBackgroundImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[favouritebutton addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[favouritebutton setFrame:CGRectMake(280, 25, 30, 30)];
videoController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:favouritebutton] autorelease];
[self presentMoviePlayerViewControllerAnimated:videoController];
Gracias.
Aquí está la función en Swift que hace uso de la respuesta de Maggie:
class func returnBarButtonItemWithImage(theImageName:String, andDownImage theDownImageName:String, andSize theSize:CGFloat, withAction theAction:Selector, andTarget theTarget:AnyObject)->UIBarButtonItem? {
if let myImage = UIImage(named:theImageName) {
var myButton = UIButton(frame: CGRectMake(0, 0, theSize, theSize))
myButton.setImage(myImage, forState: UIControlState.Normal)
myButton.addTarget(theTarget, action: theAction, forControlEvents: UIControlEvents.TouchUpInside)
if let myDownImage = UIImage(named: theDownImageName) {
myButton.setImage(myDownImage, forState: UIControlState.Selected)
}
return UIBarButtonItem(customView: myButton)
}
return nil
}
Botón UIButton * = [[UIButton alloc] init];
[button setImage:[UIImage imageNamed:@"settings"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(RightBarMethod:)
forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 20, 20)];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc]
initWithCustomView:button];
self.navigationItem.rightBarButtonItem = barButtonItem;
También puede establecer directamente desde XIB colocando un botón de redondeo en la barra de herramientas, luego cambiando la imagen de ese botón de redondeo y configurando el botón a tipo personalizado. También hacer el fondo del botón como color claro.
Todo bien. Finalmente resolví esto. Gracias Maggie y Praveen. Sólo el siguiente código funciona correctamente para mí. Bits de de sus dos respuestas :)
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(280, 25, 30, 30)];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
Gracias.
La gran solución de Maggie aplicada a Swift:
let favButton = UIButton()
favButton.setImage(UIImage(named: "unselected"), forState: .Normal)
favButton.addTarget(self, action: "favouriteButtonClicked:", forControlEvents: .TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: favButton)
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(methodAction:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 49, 30)];
navController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
Asígnelo al controlador de navegación y también puede configurar la imagen como se describe en mi código anterior.
UIButton *favButton = [[UIButton alloc] init];
[favButton setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[favButton addTarget:self action:@selector(favouriteButtonClicked:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *button = [[UIBarButtonItem alloc]
initWithCustomView:favButton];
self.navigationItem.rightBarButtonItem = button;
[button release];
[favButton release];