2010-04-22 19 views
19

Estoy trabajando en una aplicación donde tengo datos en UITableView. Es como una aplicación de desglose. El usuario hará clic en una fila y pasará a la siguiente página mostrando más registros en un UITableView. Pero el problema en mi caso es que no sé hasta cuántos niveles el usuario puede perforar. La cantidad de niveles no es fija. Así que ahora estoy pensando en crear y agregar los controladores de vista mediante programación. ¿¿Es posible?? Si es así, ¿cómo? gracias de antemano.¿Cómo creo un UIViewController programáticamente?

Respuesta

20
UIViewController *controller = [[UIViewController alloc] init]; 
controller.view = whateverViewYouHave; 

¿Tiene su propio controlador de vista que codificado? En ese caso, probablemente no necesite establecer la propiedad de vista como se ha establecido en IB si eso es lo que utilizó. Cuando tenga su controlador, puede presionarlo en el control de navegación o verlo de manera modal, etc.

+0

En este momento estoy en un controlador de visualización y quiero dirigir al usuario a viewcontroller nuevo y mostrar datos en una tabla vista – pankaj

+0

y sí, una cosa más usuario también puede profundizar al siguiente nivel desde este nuevo viewcontroller creado programáticamente – pankaj

+2

Luego probablemente desee que su primer controlador de visualización sea un UINavigationController. – willcodejavaforfood

3

UIViewController s siempre se crean mediante programación. Parece que usted sólo tiene que tener la misma clase para cada nivel de controlador de vista, por ejemplo .:

//CoolViewController:UITableViewController 
//CoolViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (!self.isAtTopLevel) { 
     CoolViewController *cvc = [[CoolViewController alloc] initWithRecord:[self.records objectAtIndex:indexPath.row]]; 
     [self.navigationController pushViewController:cvc animated:YES]; 
     [cvc release]; 
    } else { 
     //do something else 
    } 
} 

En este caso, thingies habría algún tipo de NSArray recursiva (es decir, una matriz de matrices).

+0

Gracias a eman por la respuesta, en este nuevo controlador de vista necesito mostrar una vista UITable con registros. ¿Cómo haré eso? – pankaj

+0

y sí, una cosa más el usuario también puede profundizar en el siguiente nivel desde este nuevo controlador de vista creado programáticamente – pankaj

+0

(ejemplo actualizado) En este ejemplo, cada controlador de vista de tabla tendría una matriz de registros, cada uno de los cuales tendría una matriz de sub-registros (corrígeme si no estoy entendiendo el diseño correctamente). Por lo tanto, podría tener una clase llamada 'Record', que tendría un nombre (que se muestra en la celda de la tabla) y' NSArray' de 'Record's: cada controlador de vista de tabla mostraría la matriz de sub-registros. – shosti

Cuestiones relacionadas