2011-06-23 20 views
7

Sé cómo agregar un UISegmentedControl a un UIToolBar desde dentro de IB, pero estoy tratando de hacer lo mismo mediante programación, porque estoy usando una subclase personalizada de UISegmentedControl con no tiene un XIB.UISegmentedControl Dentro de UIToolBar

Este es el código para el UISegmentedControl:

SVSegmentedControl *navSC = [[SVSegmentedControl alloc] initWithSectionTitles:[NSArray arrayWithObjects:@"List", @"Calendar", nil]]; 
navSC.delegate = self; 
[self.view addSubview:navSC]; 
[navSC release]; 
navSC.center = CGPointMake(160, 70); 

Yo estaba pensando en hacer algo así como [self.toolbar addSubview:navSC], pero que no muestra nada.

+0

Tenga en cuenta que * puede * crear un UISegmentedControl regular en IB, a continuación, cambiar su clase a su subclase personalizada. Cualquier propiedad específica de su subclase deberá configurarla en un método como 'awakeFromNib'. – benzado

Respuesta

14

Es necesario utilizar el método UIToolbar– setItems:animated: (detallado en the documentation):

UIBarButtonItem *segItem = [[UIBarButtonItem alloc] initWithCustomView:navSC]; 
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL]; 
[toolBar setItems:[NSArray arrayWithObjects:spaceItem,segItem,spaceItem,nil] animated:YES]; 
[segItem release]; 
[spaceItem release]; 
+1

¿No es necesario ajustar 'navSC' en' UIBarButtonItem'? – ZhangChn

+0

@ ZhangChn, creo que tienes razón en envolverlo en un 'UIBarButtonItem' primero porque ahora está bloqueando la aplicación. ¿Puedes mostrarme cómo? –

+0

Gracias que funcionó a la perfección. ¿Pero sabes cómo puedo centrar el botón? Ahora mismo se muestra en el lado izquierdo de la barra de herramientas. –