2010-10-16 10 views
7

Me gustaría presentar información al usuario de mi aplicación de una manera no editable pero permitir la edición después de presionar un botón (del botón de edición). ¿Hay alguna forma de crear fácilmente esta transición de no editable a editable?Proporcionando campos editables y no editables en el iPhone

me han considerado el uso de UILabel s para los campos no editables y programáticamente la eliminación de ellos y mostrando UITextField s en su lugar. Sin embargo, esto parecería poner mucho del formato en el código que preferiría no hacer (para mantener las ventajas de IB).

También consideré tener UILabel y UITextField en el mismo lugar en mi plumilla y tratar de ocultar el que no quiero. Esto parece bastante hacky.

Tal vez sería mejor con dos vistas separadas?

Cualquier comentario sobre los métodos anteriores o mejores formas de hacerlo sería muy apreciado.

Respuesta

7

si establece la propiedad habilitada de un UITextField en NO y cambia el estilo de borde en UITextBorderStyleNone su campo de texto se ve casi como un UILabel. Quizás desee alternar esos dos valores. Algo como esto:
EDITAR: Y si cambia la fuente, se ven exactamente como UILabels.

- (IBAction)toggleEdit:(id)sender { 
    for (id subview in self.view.subviews) { 
     if ([subview isKindOfClass:[UITextField class]]) { 
      BOOL isEnabled = ((UITextField*)subview).enabled; 
      ((UITextField*)subview).enabled = !isEnabled; 
      if (isEnabled) { 
       // Disable 
       ((UITextField*)subview).borderStyle = UITextBorderStyleNone; 
       ((UITextField*)subview).font = [UIFont systemFontOfSize:17.0]; 
      } 
      else { 
       // Enable 
       ((UITextField*)subview).borderStyle = UITextBorderStyleRoundedRect; 
       ((UITextField*)subview).font = [UIFont systemFontOfSize:12.0]; 
      } 
     } 
    } 
} 
+0

Brillante, gracias. Intenté con 'textField.enabled' para este efecto, pero creo que lo estaba haciendo demasiado pronto. Con el borde y la fuente también funciona perfectamente. * Y * ¡Aprendí sobre self.view.subviews! – mmdeas

0

Como fluchtpunkt respondió que usted puede hacer eso también. De lo contrario, puede proporcionar una etiqueta y un campo de texto con el mismo tamaño de fotograma. Y en "editable" cierto, puede ocultar la viñeta de la etiqueta que muestra el campo de texto. Y para la edición falsa, puede mostrar la etiqueta mientras oculta el campo de texto.

Cuestiones relacionadas