¿Cómo configurar el button para la navigation Titulo de artículo Vista?

Quiero establecer el button de progtwigción para navigationItem.titleView.

Intenté con el siguiente código pero sin éxito;

UIBarButtonItem *navigationTitleButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordenetworking target:self action:@selector(backToHOmePage)]; navigationTitleButton.image = [UIImage imageNamed:@"title.png"]; self.navigationItem.titleView = navigationTitleButton; 

Warnng dice: Tipos de puntero incompatibles que asignan a 'UIView *' de 'UIBarButtonItem * __ strong'

Intenta usar este código para ver si te funciona.

 UIView * container = [[UIView alloc]initWithFrame:CGRectZero]; UIButton * button = [[UIButton alloc]initWithFrame:CGRectZero]; [button addTarget:self action:@selector(backToHOmePage) forControlEvents:UIControlEventTouchUpInside]; [button setImage:[UIImage imageNamed:@"clanak_default.png"] forState:UIControlStateNormal]; [button sizeToFit]; [container addSubview:button]; [button release]; [container sizeToFit]; self.navigationItem.titleView = container; [container release]; 

No tiene que crear BarItem, necesita crear un object de class UIView;

ARCO

 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; view.backgroundColor = [UIColor clearColor]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = view.frame; [view addSubview:button]; self.navigationItem.titleView = view; 

o

  UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(0, 0, 40, 40); self.navigationItem.titleView = button; 

Versión Swift:

 var button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton button.frame = CGRectMake(0, 0, 100, 40) as CGRect button.backgroundColor = UIColor.networkingColor() button.setTitle("Button", forState: UIControlState.Normal) button.addTarget(self, action: Selector("clickOnButton:"), forControlEvents: UIControlEvents.TouchUpInside) self.navigationItem.titleView = button 

Aquí se puede ver en la última línea el button está directamente configurado en titleView de navigationItem, que agregará el button en el centro de la barra de navigation.

El método de acción para el button se encuentra a continuación:

 func clickOnButton(button: UIButton) { } 

Puede agregar un UIImageView como Título de navigationItem directamente, pero no estará visible si no se asegura de que esté dimensionado. La forma más fácil de dimensionarlo es usar sizeToFit ().

En este ejemplo, también networkingondea las esquinas y agrego la capacidad de saber si se toca.

 override func viewDidLoad() { super.viewDidLoad() let titleIconButton = UIButton(type: .Custom) titleIconButton.setImage(UIImage(named: "login-icon"), forState: .Normal) titleIconButton.addTarget(self, action: #selector(titleIconTap), forControlEvents: .TouchUpInside) titleIconButton.clipsToBounds = true titleIconButton.layer.cornerRadius = 4 titleIconButton.sizeToFit() navigationItem.titleView = titleIconButton } 

introduzca la descripción de la imagen aquí

Versión Swift 3:

  let logoButton = UIButton(type: .custom) logoButton.setImage(#imageLiteral(resourceName: "Logo"), for: .normal) logoButton.sizeToFit() logoButton.addTarget(self, action: #selector(tapLogo), for: .touchUpInside) self.navigationItem.title = "" self.navigationItem.titleView = logoButton 

Intente crear un object UIButton para su button en lugar de uno UIBarButtonItem. UIButton es una subclass de UIView por lo que debería ser capaz de establecer la propiedad titleView en el button UIB que ha creado.

Puede agregar su button en una vista y luego hacer que esa vista sea la vista de título de la barra de navigation, entonces puede cambiar fácilmente el título del button en time de ejecución.

Este enfoque basado en UISegmentedControl puede ayudarlo: https://stackoverflow.com/a/16792575/171933 ¡Disfrute!