NSMutableArray не обновляется и UITableView не перезагружается - PullRequest
0 голосов
/ 12 марта 2012

Я создаю приложение чата. У меня есть 2 метода в моем контроллере представления, один для отправки и один для получения сообщений. В методе отправки я создаю NSMutableDictionary с двумя объектами ..

NSMutableDictionary *msgFilter = [[NSMutableDictionary alloc] init];
[msgFilter setObject:messageStr forKey:@"msg"];
[msgFilter setObject:@"you" forKey:@"sender"];

[messages addObject:msgFilter];

«messages» - это мой основной NSMutableArray для хранения всех сообщений, свойства которых установлены, синтезированы и распределены. Когда я отправляю сообщение, оно правильно добавляется в NSMutableArray, и обновляется UITableView, показывая мне значения в ячейке.

У меня в appDelegate есть метод для проверки полученных сообщений, и я использую ту же процедуру для анализа данных и сохранения их в NSMutableDictionary. Этот словарь затем передается в viewcontroller и добавляется в тот же NSMutableArray (messages), а затем я вызываю [self.chattable reloadData]. Но это ничего не делает. Когда я создал NSMutableArray, у него было только полученное сообщение, а не все данные (отправлено + получено).

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

// Раздел сообщений о приеме

NSMutableDictionary *msgFilter = [myDelegate msgFilter];
[messages addObject:msgFilter];
[self.tView reloadData];

// Раздел таблицы

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

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {   
return 1;   
  }
   -(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];
}
NSDictionary *s = (NSDictionary *) [messages objectAtIndex:indexPath.row];
NSString *sender = [s objectForKey:@"sender"];
NSString *message = [s objectForKey:@"msg"];

if ([sender isEqualToString:@"you"])
{
    cell.detailTextLabel.text = [NSString stringWithFormat:@"TX: %at", message];
}
else
{
    cell.detailTextLabel.text = [NSString stringWithFormat:@"RX: %at", message];
}    
return cell;
  }

1 Ответ

0 голосов
/ 12 марта 2012

Объявление массива сообщений в Application Delegate. так что это будет общий массив. так может быть ваша проблема будет решена. потому что это общий массив. так что вы можете добавить словарь в массив сообщений из любого места, не нужно передавать словарь между diff UIView.

...