2012-06-18 1 views
0

Я разрабатываю приложение, которое нуждается в функциональности чата, представляя сообщения, отправленные и полученные в виде таблицы. Я могу загрузить первое сообщение без каких-либо проблем, но когда приходит второе сообщение, первый из них стирается в таблице и представляет второе сообщение, но в двух ячейках, третьих сообщениях в трех ячейках и так далее.Чат, загружающий одни и те же сообщения во все ячейки

Я хранения сообщений в NSMutableArray, а затем я запускаю этот массив:

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
General *general = [General sharedManager]; 

NSLog(@"We are in cellForRowAtIndexPath de ChatViewController"); 
//UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"]; 
//if(!cell){ 
messarray=general.messarray; 
for (int i=0;i<=messarray.count; i++) 
{ 
    diccio=[messarray objectAtIndex:i]; 
    general.firstmess=[diccio objectForKey:@"msg"]; 
    general.firstfrom=[diccio objectForKey:@"sender"]; 

UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"]; 
//} 
text=general.firstmess; 
remite=general.firstfrom; 
[[cell textLabel]setText:remite]; 
[[cell detailTextLabel] setText:text]; 

return cell; 

} 
} 

его, как for не сделано должным образом.

ответ

0

Ваш для assings петли последнего сообщения в текущей ячейке То, что вы должны сделать, это

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    General *general = [General sharedManager]; 

    NSLog(@"We are in cellForRowAtIndexPath de ChatViewController"); 
    messarray = general.messarray; 

    //Get the element basing on the current row 
    diccio=[messarray objectAtIndex:indexPath.row]; 
    general.firstmess=[diccio objectForKey:@"msg"]; 
    general.firstfrom=[diccio objectForKey:@"sender"]; 

    UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"]; 
    text = general.firstmess; 
    remite = general.firstfrom; 
    [[cell textLabel]setText:remite]; 
    [[cell detailTextLabel] setText:text]; 

    return cell; 
} 

предложение заключается в реализации dequeueReusableCellWithIdentifier правильно

+0

Он работал отлично, Омар. Если вы когда-нибудь приезжаете в Испанию, у меня есть много чего угодно, вы будете ждать вас;) – Fustigador

+0

@ Fustigador хе-хе-хе-хе-хе-хе, я могу на самом деле прийти: P и подумать о принятии и/или продолжении :) –

+0

Мне нужно подождать минут для увеличения. Но рассчитывайте на это. – Fustigador

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

  • Нет связанных вопросов^_^