¿Cómo utilizo un NSMutableArray como un DataSource para mi UITableView?

Tengo un NSMutableArray con datos (codificados por hardware).

Implementé estos dos methods de TableView y en IB, establecí el delegado y el origen de datos

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [myArray count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"]; if (!cell) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"] autorelease]; } cell.textLabel.text = [myArray objectAtIndex:[indexPath row]]; NSLog(@"Cell is %@", [myArray objectAtIndex:indexPath.row]); return cell; } 

Los datos no aparecerán en el TableView. He ejecutado NSLog y puedo ver que los datos están en myArray.

Agregué el NSLog al código y parece que el código nunca se ejecuta. La pregunta es ¿cómo se crea mi matriz?

Aquí está el código

 - (id)init:(NSMutableArray *)theArray { [super init]; countryTable.delegate = self; countryTable.dataSource = self; UITapGestureRecognizer * tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)] autorelease]; [window addGestureRecognizer:tapRecognizer]; myArray = [[NSMutableArray alloc] init]; myArray = theArray; return self; } 

Su código básico es correcto, solo necesita tener una matriz (que no ha proporcionado aquí) , por lo que este sería un ejemplo:

 NSMutableArray *myArray = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil]; 

Y puede NSLog esto: NSLog(@"Count: %i, Array: %@",[myArray count], myArray);

Salida: que debería volver como cell.textLabel.text por ejemplo

Cuenta: 3, Array: ("Uno", "Dos", "Tres")

También debe asegurarse de establecer los protocolos UITableViewDelegate y UITableViewDataSource en su encabezado.

No sé si la pregunta aún está abierta pero lo bash.

Cuando leo su código, no puedo ver dónde se instancia la tabla de país, así que supongo que está conectado en InterfaceBuilder. Y si este es el caso, countryTable solo es válido después de viewDidLoad. Pero también puede configurar delegate y dataSource en InterfaceBuilder.

Por cierto, cada vez que cambias el origen de datos (myArray), llama a countryTable.reloadData.

Prueba esto –

 cell.textLabel.text = [[myArray objectAtIndex:indexPath.row] retain];