Почему NSMutableArray не отображается в UITableView? - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть приложение, в котором UITableView заполняется NSMutableArray. Проблема в том, что когда я добавляю строки в массив, его нет в TableView. Вот код:

.h

<UITableViewDelegate, UITableViewDataSource>{
IBOutlet UITableView *table;
NSMutableArray *array;
}

.m

- (void)viewDidLoad{
array=[[NSMutableArray alloc] init];
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [array count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    NSInteger row = [indexPath indexAtPosition:1];
    cell.textLabel.text = [array objectAtIndex:row];
    return cell;
}

-(void)addObjectsToTheArray{
    NSString *stringA = @"something";
    NSString *stringB = @"moreofsomething" ;
    [array addObject:stringA];
    if (![stringA isEqual: stringB]) {
        stringA = @"somethingtoo"  
        [array addObject: stringB];
        [table beginUpdates];
    }
}

У кого-нибудь есть идея, почему он не перезагружает данные? Я не знаю, почему это не работает, и это не дает мне никакой ошибки.

Ответы [ 5 ]

1 голос
/ 08 февраля 2012

Ваш массив пуст.Вызовите [self addObjectsToTheArray]; после создания массива:

- (void)viewDidLoad
{
    array = [[NSMutableArray alloc] init];
    [self addObjectsToTheArray];
}
1 голос
/ 08 февраля 2012

Вы вызываете [table reloadData]; где-нибудь в своем коде?

Вы установили dataSource и delegate для table?

1 голос
/ 08 февраля 2012

Вы должны использовать

[таблица reloadData];

для перезагрузки таблицы.

0 голосов
/ 08 февраля 2012

Это тоже немного странно.

NSInteger row = [indexPath indexAtPosition:1];
cell.textLabel.text = [array objectAtIndex:row];

Почему бы просто не использовать:

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

Попробуйте добавить NSLog в cellForRowAtIndexPath: и numberOfRowsInSection:, это даст вам больше информации о том, что происходит.

0 голосов
/ 08 февраля 2012

Вы пробовали [ table reloadData ]?Кроме того, beginUpdates также должен быть в паре с endUpdates, которого я здесь не вижу.Используйте один подход или другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...