Estoy añadiendo una UISegmentedControl a la barra de Navegación a través de programación donde el titleView debe ser. Pero como Apple docs han mencionado en titleView, Esta propiedad se omite si leftBarButtonItem no es nil.

Pero quiero tener el botón de atrás también. Como se ha ilustrado en sus propias imágenes!

UISegmentedControl en la Barra de Navegación con el botón Atrás

A continuación es el código que añadir la UISegmentedControl.

self.navigationItem.leftBarButtonItem = nil;
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
self.navigationItem.titleView = statFilter;

Hay otra forma de agregar un UISegmentedControl junto con el botón de Atrás así?

Gracias.

OriginalEl autor Isuru | 2013-03-13

2 Comentarios

  1. 23

    Probar este

    Quitar esta línea — > self.navigationItem.leftBarButtonItem = nil;

    Agregar este lugar

    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]];
    [statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
    [statFilter sizeToFit];
    self.navigationItem.titleView = statFilter;

    Único cambio es que he añadido esta línea :

    [statFilter sizeToFit];

    Espero que esto ayude !!!

    Esto realmente me ayudó, gracias…::)
    setegmentedControlStyle está en desuso como de iOS7… puedes actualizar tu respuesta por favor?
    Esto no parece funcionar con el segmento de control agregar a través de un IBOutlet. Un segmento de control de trabajo a través de programación funcione a la perfección.

    OriginalEl autor arun.s

  2. 3

    Puede crear un UIBarButtonItem con una vista personalizada que podría ser su UISegmentedControl.

    Algo a lo largo de las líneas de la que pueden trabajar.

    //create segmented control with items
    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]];
    
    //create bar button item with segmented control as custom view
    UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
    
    //add segmented control bar button item to navigation bar
    [[[self navigationController] navigationItem] setRightBarButtonItem:barButtonItem];

    Yo no he probado esto, pero debe ser a lo largo de las líneas correctas de lo que usted necesita.

    Hola gracias por la respuesta. En el ínterin me estaba esperando, me dio una palmada en conjunto un pequeño programa para probarlo. Puse 2 Vista de los Controladores, un botón en la primera de ellas para pasar a la otra. Y en el método ViewDidLoad de la segunda Vista Controlador, he creado el UISegmentedControl utilizando el código que he publicado en mi pregunta y voila! Funciona! No sé por qué Apple ha dicho que no va a funcionar. :S

    OriginalEl autor CaptainRedmuff

Dejar respuesta

Please enter your comment!
Please enter your name here