2009-06-25 8 views
5

Usar Settings.app en el iPhone no es tan difícil. De hecho, Xcode hace la mayor parte del trabajo por usted. Simplemente agregue Settings.bundle a su proyecto y allí lo tiene sin costo alguno.¿Existe una biblioteca o marco para configurar las preferencias desde dentro de una aplicación de iPhone?

Por el momento estoy desarrollando una aplicación para iPhone que requiere que el usuario complete varias "formas", principalmente pares clave-valor, algunos controles deslizantes y varias vistas modales con menús desplegables. Tan similar es la tarea similar a lo que hace Settings.app.

Hacer los formularios por mi cuenta es una tarea pesada en mi opinión, así que estoy seguro si hay un marco para este tipo de tareas. Desafortunadamente, parece que Apple no proporciona su propia solución. Quizás alguien conozca un marco o un artículo en la web que describa las mejores prácticas.

En caso de que no entienden a qué patrón que me refiero, hice una captura de pantalla: http://img.skitch.com/20090625-s8bf6ahybwe3cesd1id38h3nt.jpg

Respuesta

1

Bueno, si usted está haciendo los ajustes entonces sugeriría ponerlos en el lugar correcto y el uso de los ajustes. haz.

Supongo que estás haciendo ajustes que son muy importantes para tu aplicación y sería una experiencia de usuario horrible si tuvieran que seguir saltando de la aplicación a la configuración y viceversa.

Cuando dices que hacer la tarea es pesada, ¿puedes explicarlo? Como lo he hecho y no ha sido pesado.

Use un UITableViewController

para cada celda que desea utilizar poner en un código similar a:

 cell.textLabel.text = @"Last name:"; 
     UIFont *labelFont = [UIFont systemFontOfSize:[UIFont labelFontSize]]; 
     CGSize textSize = [cell.textLabel.text sizeWithFont:labelFont]; 
     baseRect.origin.x = textSize.width+15; 
     baseRect.origin.y +=7; 
     baseRect.size.width = baseRect.size.width - textSize.width - 15; 
     baseRect.size.height = 23; 
     UITextField *textField = [[UITextField alloc] initWithFrame:baseRect]; 
     textField.keyboardType = UIKeyboardTypeAlphabet; 
     textField.returnKeyType = UIReturnKeyDone; 
     textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
     textField.delegate = self; 
     textField.placeholder = @"last name"; 
     [textField addTarget:self action:@selector(lastNameChanged:) forControlEvents:UIControlEventAllEditingEvents]; 
     textField.tag = 182; 
     [cell.contentView addSubview:textField];  
     [textField release]; 

Esto ha funcionado para mí para reproducir la interfaz que está hablando - el ejemplo aquí es un TextField, pero el mismo código ha funcionado muy bien con todos los controles.

+0

¿No está reutilizando sus UITableViewCells? Si lo hace, ¿cómo puede distinguir qué campos de texto invocan lastNameChanged:? –

+0

¡Sí, claro que sí! - la etiqueta en el campo de texto me dice qué campo es cual. También me aseguro de que todos los controles que coinciden con mi lista de etiquetas se eliminen cuando la celda se recicla. – Grouchal

0

Estoy bastante seguro de que lo que está pidiendo es un marco que vuelva a crear la interfaz de configuración del archivo settings.bundle para que haya configuraciones tanto en la aplicación de configuración como en la aplicación.

Todavía no conozco nada de eso pero, realmente podría usar uno y he considerado escribir uno.

2

Es mejor poner ajustes en la aplicación, al menos hasta que Apple facilite enviar al usuario a Configuración y luego volver a la aplicación. Si miras los nuevos 3.0 UITableViewCellStyles, hay un estilo hecho a medida para hacer tipos de celdas de configuración: sería muy fácil construir una pantalla de configuración simple.

3

Después de mucha investigación no logré obtener una buena respuesta a mi pregunta inicial. Pero ahora me encontré con este repositorio en github: mySettings

+0

En la página de mySettings Github: "mySettings ya no está en desarrollo activo". El último compromiso es de enero de 2010. –

Cuestiones relacionadas