Почему мои объекты NSMutableArray не добавляются в UITableView сразу? - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть NSMutableArray с объектами внутри него, и я использую следующий код для добавления / удаления объектов из UITableView.Это работает, но только после закрытия и перезапуска приложения, а не сразу.Почему это?Вот мой код (maincelltext - это заголовок в ячейке, а subtitlecelltext - это субтитр):

maincelltext = [[NSMutableArray alloc] init];
subtitlecelltext = [[NSMutableArray alloc] init];

[maincelltext addObject:@"TITLE"];
[subtitlecelltext addObject:@"SUBTITLE TEST"];

РЕДАКТИРОВАТЬ: Вот мой код UITableView:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

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

cell.textLabel.font = [UIFont fontWithName:@"HelveticaBold" size:16.0];

cell.textLabel.adjustsFontSizeToFitWidth = YES; 
cell.textLabel.numberOfLines = 1;

// Configure the cell.
UIImage *cellImage = [UIImage imageNamed:@"warning.png"];
CGRect cropRect = CGRectMake(0.0, 0.0, 12.0, 12.0);
CGImageRef croppedImage = CGImageCreateWithImageInRect([cellImage CGImage], CGRectMake(0.0f,0.0f,cellImage.size.width,cellImage.size.height));
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]]; 
CGImageRelease(croppedImage);
[self.view addSubview:myImageView];

cell.imageView.image = cellImage;

NSString *subjectString = [maincelltext objectAtIndex: [indexPath row]];

cell.textLabel.text = subjectString;

NSString *subtitle = [subtitlecelltext objectAtIndex: [indexPath row]];

cell.detailTextLabel.text = subtitle;

if(maincelltext.count == 0){

    NSString *notabledata = [NSString stringWithFormat:@"No Dates Set"];
    [maincelltext addObject:notabledata];

}

return cell;
} 

Спасибо!

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Просто сделайте [myTableView reloadData]; после того, как вы сделали [myArray addObject:myObject];, и с вами все будет в порядке.

1 голос
/ 02 ноября 2011

вам нужно сообщить UITableView, что ему нужно вставить строки. Сначала определите индекс в массиве, в котором сейчас находятся новые объекты, затем скажите UITableView вставить строки следующим образом:

NSIndexPath *indexPathOfNewObject=[NSIndexPath indexPathForRow: newObjectIndex section:0];
NSArray *indexPathArray=[NSArray arrayWithObject: indexPathOfNewObject];

[self.tableView beginUpdates];
// Note that UITableViewRowAnimationAutomatic is for iOS5 only.
[self.tableView insertRowsAtIndexPaths: indexPathArray withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];

Используя этот метод, вы получите крутой эффект анимации на tableView.

Кроме того, вы можете просто вызвать [self.tableView reloadData], и он просто перезагрузит все данные.

Удачи!

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