2011-01-14 3 views
0

Эй, ребята! Я новичок в Objective C, и мне нужна небольшая помощь. Я создал UITableView в UIViewController. Я хотел бы знать, как динамически заполнять мой UITableView. Данные - это куча меток, которые я сохранил в NSMutableArray. Поэтому каждая строка отображает содержимое массива. После того, как массив будет перезагружен новыми данными, вторая строка будет продолжать отображать данные по мере их добавления в массив. Заранее благодарю за любую помощь!Динамическое добавление данных в UITableView

ответ

0

@tableView как вы хотите конкретную строку, т.е. второй строки, чтобы отобразить данные после массива (т.е. предположит myArray) перезагружать для этого я предлагаю U, чтобы сделать еще один массив NSMutableArray типа предположит, что copymyArray .... и после перезагрузки myArray передают объекты myArray в copymyArray. Теперь во второй строке индекса строки укажите copymyArray ........ и по индексу отдыха tableview дайте myArray. Надеюсь, это поможет u!

+0

Я не уверен, что вы имеете в виду. Не могли бы вы показать мне пример кода. – narda

+0

Мое единственное средство - это сделать другой массив, который содержит свежие данные i.e перезагруженного массива .... и дать этому массиву вторую строку. Надеюсь, понимаешь! – Sudhanshu

0

Просто сделай так ..................

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *[email protected]"cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:celltype]; 


    for (UIView *view in cell.contentView.subviews) { 
     [view removeFromSuperview]; 
    } 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     cell.backgroundColor=[UIColor clearColor]; 
     //cell.textLabel.text=[[resultarray objectAtIndex:indexPath.row] valueForKey:@"Service"]; 

     cell.backgroundView=[[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"cell.png"]]autorelease]; 
          // [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"back.png"]] autorelease]; 

     cell.selectionStyle=UITableViewCellSelectionStyleNone; 



    } 


    UILabel *productCodeLabel = [[UILabel alloc] initWithFrame:CGRectMake(105, 7, 60,20)]; 
    productCodeLabel.textColor = [UIColor whiteColor]; 
    productCodeLabel.backgroundColor=[UIColor clearColor]; 
    productCodeLabel.text=[NSString stringWithFormat:@"%@",@"Code"]; 
    [cell.contentView addSubview:productCodeLabel]; 
    [productCodeLabel release]; 

    UILabel *CodeValueLabel = [[UILabel alloc] initWithFrame:CGRectMake(170, 7, 140,20)]; 
    CodeValueLabel.textColor = [UIColor whiteColor]; 
    CodeValueLabel.backgroundColor=[UIColor clearColor]; 
    CodeValueLabel.text=[NSString stringWithFormat:@"%@",[[productArray objectAtIndex:indexPath.row]valueForKey:@"ID"]]; 
    [cell.contentView addSubview:CodeValueLabel]; 
    [CodeValueLabel release]; 



    UILabel *productNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(105, 35, 60,20)]; 
    productNameLabel.textColor = [UIColor whiteColor]; 
    productNameLabel.backgroundColor=[UIColor clearColor]; 
    productNameLabel.text=[NSString stringWithFormat:@"%@",@"Name"]; 
    [cell.contentView addSubview:productNameLabel]; 
    [productNameLabel release]; 

    UILabel *NameValueLabel = [[UILabel alloc] initWithFrame:CGRectMake(170, 35, 140,20)]; 
    NameValueLabel.textColor = [UIColor whiteColor]; 
    NameValueLabel.backgroundColor=[UIColor clearColor]; 
    NameValueLabel.text=[NSString stringWithFormat:@"%@",[[productArray objectAtIndex:indexPath.row]valueForKey:@"Title"]]; 
    [cell.contentView addSubview:NameValueLabel]; 
    [NameValueLabel release]; 



    UILabel *dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(105, 68, 60,20)]; 
    dateLabel.textColor = [UIColor whiteColor]; 
    dateLabel.backgroundColor=[UIColor clearColor]; 
    dateLabel.text=[NSString stringWithFormat:@"%@",@"Date"]; 
    [cell.contentView addSubview:dateLabel]; 
    [dateLabel release]; 

    UILabel *dateValueLabel = [[UILabel alloc] initWithFrame:CGRectMake(170, 68, 140,20)]; 
    dateValueLabel.textColor = [UIColor whiteColor]; 
    dateValueLabel.backgroundColor=[UIColor clearColor]; 
    dateValueLabel.text=[NSString stringWithFormat:@"%@",[[productArray objectAtIndex:indexPath.row]valueForKey:@"PostedDate"]]; 
    dateValueLabel.font=[UIFont systemFontOfSize:14]; 
    dateValueLabel.numberOfLines=3; 
    dateValueLabel.adjustsFontSizeToFitWidth=YES; 
    [dateValueLabel setLineBreakMode:UILineBreakModeCharacterWrap]; 
    [cell.contentView addSubview:dateValueLabel]; 
    [dateValueLabel release]; 

    /* 
    UILabel *DetailLabel = [[UILabel alloc] initWithFrame:CGRectMake(185, 15, 100,20)]; 
    DetailLabel.textColor = [UIColor blackColor]; 
    DetailLabel.backgroundColor=[UIColor clearColor]; 

    [cell.contentView addSubview:DetailLabel]; 
    [DetailLabel release];*/ 
    return cell; 

} 

У меня есть массив с ключами, поэтому я использую ключ, как well.But если вы просто иметь массив без ключей. Тогда вам не нужно писать ValuForKey: @ «Id», вы можете пропустить значение для key.Hope, это поможет вам, я дал вам полный код.

+0

Спасибо, sabby! Я попробовал нечто подобное. При той же функции, после проверки, что ячейка не равна nil, я запустил цикл, начинающийся с 0 до количества элементов, оставшихся в моем массиве. Используя значение цикла, я обратился к каждой метке и установил ее как cell.contentView, а затем выпустил метку. Однако ничего не появилось. Я уверен, что есть недостаток в моем подходе. – narda

+0

Вам нужно следовать тому же подходу к ячейке, что и я, а затем вы также можете реализовать свою собственную логику. Но не делайте ничего в блоке if (cell == nil), делайте что-нибудь после этого, зацикливая aur, что когда-либо .... И попытайтесь принять ответ, если он вам поможет. – Sabby

+0

Я придерживался того же подхода, что и вы упомянули. Я тоже не включил никого. после того, как я завершу цикл if, я поставлю цикл for. У меня действительно есть изменения, которые могут облегчить ситуацию. Я хочу, чтобы метки отображались в таблице только при нажатии определенной кнопки. – narda

Смежные вопросы