2011-05-03 6 views
5

Estoy (intentando) desarrollar mi primera aplicación en Xcode usando el marco de cacao.¿Cómo recibo el valor actual de un control deslizante en el código?

Tengo un control deslizante cuyo valor mínimo es 10 y máximo es 50. Esto es para seleccionar los resultados máximos de búsqueda.

He vinculado una etiqueta en mi interfaz de usuario para mostrar el valor del control deslizante y cuando se mueve, actualiza la etiqueta en la interfaz de usuario.
Sin embargo, estoy intentando unir 4 cadenas para crear mi URL final, una de ellas es el valor de dicha etiqueta.

Estoy tratando de leer el valor de la etiqueta de la interfaz para su uso en la creación de la URL terminada

NSString *startofURL = @"http://starturl.com/?q="; 
NSString *searchTerm = whatToSearch; 
NSString *middleofURL = "&max-results="; 
NSString *resultsStr = labelMaxResults.stringValue; //Problem here ?? 

tengo 2 preguntas; En primer lugar, ¿cómo hago para recuperar el valor de mi control deslizante a través del código en lugar de tratar de obtenerlo de la etiqueta vinculada, ya que creo que este es mi problema.

En segundo lugar, he leído sobre unir y anexar cadenas, sin embargo, estoy un poco confundido sobre cuál es el mejor método para unir las 4 cadenas en una URL larga.

+0

No olvides escanear URL 'whatToSearch' antes de empalmarla en la URL. –

+0

Hola a todos, gracias a todos por su ayuda, es muy útil. – Steve

+0

Tengo problemas con el bit de enlaces en el código de ejemplo por slev, y sigo obteniendo 2011-05-04 01: 27: 33.307 Control deslizante [11856: a0f] No se puede crear el doble desde el objeto de la clase SliderAppDelegate 2011- 05-04 01: 27: 33.309 Control deslizante [11856: a0f] *** Aplicación de finalización debido a la excepción no detectada 'NSInternalInconsistencyException', razón: 'No se puede crear el doble desde el objeto ¿Alguna idea? En el área de enlaces solo puedo vincularlo a la clase que es mi SliderAppDelegate Model Key Path también está configurado en self, lo cambié a sliderValue como en los estados de ejemplo pero no tuve suerte. Gracias – Steve

Respuesta

6

Para la primera parte de su pregunta, depende de qué sistema operativo esté usando y qué proceso usar.

Si está utilizando OS X, la mejor manera de obtener un valor para su control deslizante es crear un enlace en IB para su control deslizante. Para hacer esto, haga clic en el control deslizante en IB y vaya a la sección de enlaces. En la sección Valor, haga clic en Valor y seleccione la clase en la que desea usar el valor como su clase Enlazar (voy a usar MyClass para este ejemplo). Luego, para la ruta de la clave del modelo, asígnela a algún valor de su elección. Para el propósito de esto, simplemente lo llamaré sliderValue.

Luego, en MyClass.h, debe configurar lo siguiente:

@interface MyClass : <your class type> { 
    int sliderValue; 
} 
@property (readwrite, assign) int sliderValue; 

En MyClass.m, que necesita para sintetizar el valor.

@synthesize sliderValue; 

En este punto, usted debe ser capaz de obtener el valor de su deslizador en cualquier punto de su código llamando [self sliderValue].

Sin embargo, si está utilizando iOS, entonces todo lo que tiene que hacer es llamar la propiedad del valor de su control deslizante. Entonces, si tiene el a UISlider *mySlider, todo lo que tiene que hacer es llamar al mySlider.value para obtener el valor actual de su control deslizante.

Para su segunda pregunta, puede hacerlo de dos maneras. Si desea anexar las cuerdas, sólo tiene que seguir el formato:

NSString *appendedString = @""; 
appendedString = [appendedString stringByAppendingString:string1]; 

y así sucesivamente hasta que tenga todas sus cadenas en su URL.

En su caso, me sentaría personal de seguridad de toda la cadena de URL como stringWithFormat:

NSString *urlString = [NSString stringWithFormat:@"http://www.starturl.com/%@%@%@", whatToSearch, middleOfURL, resultsStr]; 

Introduzca los valores que desee en la URL de esa manera mediante la creación de whatToSearch, etc., a los valores que se querer.De esta manera, usted no tiene que preocuparse de anexar todo junto

+1

Dado que 'middleOfURL' es una cadena constante, puede integrarlo en la cadena de formato, como Kashiv mostró en su respuesta. –

1

El código debería tener este aspecto:

NSString *urlString = [NSString stringWithFormat:@"http://starturl.com/?q=%@&max-results=%f", whatToSearch, [slider floatValue]]; 

EDIT: Se ha corregido mi respuesta. Para UISlider, debe ser valor propiedad. Para NSSlider se debe utilizar - floatValue método

+0

Solo si 'slider' es un UISlider, no un NSSlider. –

+0

Ah, pensé que este es el elemento UI ... Así que esto debería ser [slider floatValue] en su lugar. – akashivskyy

+0

En realidad para NSSlider '-doubleValue' es probablemente mejor. – JeremyP

5
NSSlider * slider = [[NSSlider alloc] init]; 
    [slider setMinValue:50]; 
    [slider setMaxValue:150]; 
    int sliderValue = [slider intValue]; 

esto no pone el cursor en la pantalla, pero suponer que lo hizo en el IB, ignorar la primera línea, usted puede configurar su mínimo y máximo y obtener el valor. puede realizar una acción como

- (IBAction) sliderMoved: (id) emisor

se unen entonces que al deslizador, si se establece el control deslizante para continua Usted recibirá actualizaciones cada vez que se se mueve de otra forma justo cuando sueltas el deslizador

-(IBAction)sliderMoved:(id)sender 
{ 
    sliderValue = [slider intValue]; 
    [self doSomethingElseNow]; 
} 
Cuestiones relacionadas