¿Cómo puedo usar un NSMutableArray como un origen de datos para mi UITableView

Tengo un NSMutableArray con datos (codificado).

He implementado estos dos en formato tableview métodos y en IB, me he fijado que 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 aparecen en el formato tableview. He ejecutado NSLog y puedo ver los datos en myArray.

He añadido el NSLog para el código, en la que aparece el código nunca se ejecuta. La pregunta es ¿cómo es mi matriz que se creó?

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;
}
¿cómo está la creación de la NSMutableArray?

OriginalEl autor Cocoa Dev | 2011-02-08

3 Kommentare

  1. 5

    Tu código es correcto, sólo se 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 este: NSLog(@"Count: %i, Array: %@",[myArray count], myArray);

    De salida: Que debe devolver como el cell.textLabel.text por su ejemplo

    Count: 3, Matriz: (
    «Uno»,
    «Dos»,
    «Tres»
    )

    También debe asegurarse de que se establece la UITableViewDelegate y UITableViewDataSource protocolos en su encabezado.

    OriginalEl autor WrightsCS

  2. 1

    No sé si la pregunta está aún abierta, pero le doy una oportunidad.

    Como he leído tu código no veo donde countryTable es instanciado por lo que asumo que es conectado en InterfaceBuilder? Y si este es el caso, countryTable sólo es válida después de viewDidLoad.
    Pero usted puede establecer el delegado y el origen de datos en InterfaceBuilder así.

    Por el camino, cada vez que cambiar el origen de datos (myArray), llamada countryTable.reloadData.

    OriginalEl autor easyDeal

  3. 0

    Intente esto:

    cell.textLabel.text = [[myArray objectAtIndex:indexPath.row] retain];
    UILabel.el texto es una copia de la propiedad, el extra retener sólo las fugas que NSString.
    Traté de conservar y mismo problema. Voy a publicar mi versión actualizada del código de arriba

    OriginalEl autor Mahesh

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea