2011-12-03 21 views
6

asumir que hay código para un proyecto de iPhone que es: referenciaMostrarUITextfield.text devuelve null

 IBOutlet UITextField* numberDisplay; 
     @property (strong,nonatomic) IBOutlet UITextField *numberDisplay; 

en el archivo de implementación y

@synthesize;

en el archivo de implementación. También en la aplicación es

 -(IBAction)numberClicked:(id)sender { 
    UIButton *buttonPressed = (UIButton *)sender; 
    int val = buttonPressed.tag; 
    if ([numberDisplay.text compare:@"0"] == 0) { 
    numberDisplay.text =[NSString stringWithFormat:@"%d", val ]; 

    } else { 
     numberDisplay.text = [NSString 
        stringWithFormat:@"%@%d", numberDisplay.text, val ]; 
    } 

    } 

Cuando ejecuto la aplicación no existe una pantalla que se muestra en el UITextField, a pesar de que las conexiones se hicieron con IB y se ha demostrado ser hecha por el inspector de visión. A pesar de que una prueba de si añado las líneas

numberDisplay.text = @"a"; 
    NSLog(@"the value is %@",numberDisplay.text); 
    NSLog(@"the value is %@",numberDisplay); 

me sale "es el valor (null) en ambas ideas cases.Any.

Puede alguien por favor dígame lo que está mal con estas dos líneas? . Gracias.


Gracias a todos. empecé desde cero y ahora funciona todo. Parece como si tuviera un archivo mal etiquetado.

+1

Intenta imprimir la variable 'numberDisplay' en lugar de su propiedad' text'. Sospecho que en otro lugar no has inicializado tu campo de texto; como no puede asignar una variable a un objeto nulo, obtiene nulo a cambio. – JoePasq

+0

cómo inicializaría el campo de texto. En el inspector de atributos he intentado configurar el texto y/o el marcador de posición y ambos en 0 para ver si eso ayudaría, pero no lo hace –

+1

Debe vincular el UiTextView en su archivo .xib con IBOutlet. –

Respuesta

1

Siguiendo la línea wi Devolverá el valor no nulo si configuró IBOutlet en el constructor Interfaz. Se declarará en archivo .h.

IBOutlet UITextField* numberDisplay; 

Si no está configurando salida a un IB, es obvio que volverá valor nulo o tienes que inicializarlo mediante programación.

UITextField *numberDisplay = [[UITextField alloc] initWithFrame:CGRectMake(10,10, 100,30)]; 
numberDisplay.font = [UIFont fontWithName:@"Verdana" size:12.0]; 
numberDisplay.background = [UIColor clearColor]; 
numberDisplay.text = @"123456789"; 
[self.view addSubview:numberDisplay]; 
NSLog(@"the value is %@",numberDisplay.text); // returns 123456789 
0

Parece posible que no se configura correctamente su IBOutlets en Interface Builder.

Mira mi respuesta a this question, básicamente lo mismo.

2

Los objetos nulos pueden recibir selectores y los ignoran y devuelven un objeto nulo. el caso de que encuentre es así:

[(UITextField*)nil setText:@"a"]; 
NSLog(@"the value is %@", [(UITextField*)nil text]); 

Asegúrese de que el campo de texto no es nulo

+0

¿cómo puede ser nulo el campo de texto si lo configuro en "a" –

+0

¿Por qué está lanzando 'nil ¿? – titaniumdecoy

+1

Para demostrar su respuesta, nada puede responder a ningún mensaje con nulo. –

0

tiene que sintetizar adecuadamente el campo de texto en las formas siguientes: - Añadir la línea en .h

@property (nonatomic, retain) UITextField *numberDisplay; 

y añadir la línea en .m

@synthesize numberDisplay; 

y luego hacer lo que hizo. No obtendrás el valor nulo esta vez.

+0

no es bueno. todavía nulo. –

+0

compruebe si sus conexiones en IB son apropiadas o no ... – vipul

+0

He arrastrado el cuadro de texto en el archivo xib a la toma de corriente y se registra, ya que en el inspector de conexiones muestra que la toma de referencia es el propietario del archivo IBOUtilicé . –

Cuestiones relacionadas