ios: UITableViewCell исчезает при прокрутке - PullRequest
2 голосов
/ 10 января 2012

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

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

У меня есть следующий метод:

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {    
   // static NSString* CellIdentifier = @"MessageCellIdentifier";
   // MessageTableViewCell* cell = (MessageTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   //if (cell == nil){

   MessageTableViewCell* cell = [[[MessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
    SharethingsAppDelegate *delegate = (SharethingsAppDelegate *)[[UIApplication sharedApplication] delegate];
   ChatMessage* message = [[delegate.dataModel getMessagesOfChatWithID:self.chatID] objectAtIndex:indexPath.row];
   [cell setMessage:message];

   //}
   return cell;
}

Я пытался сохранить тест "cell == nil", но то же самое.
Я предполагаю, что это какая-то проблема повторного использования соты, но ... не могу понять, что именно.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2014

Я сталкиваюсь с той же проблемой, что и вы. В моем случае я использую пользовательские ячейки и в своем методе heightForRowAtIndexPath:(NSIndexPath *)indexPath я устанавливаю их высоту. Когда вы начнете прокручивать, ячейки исчезнут, но только если высота строки станет меньше , тогда высота моей пользовательской ячейки. В остальном работает нормально!

0 голосов
/ 10 января 2012

Возможно, ваш UITableView считает, что ваши клетки вне поля зрения, и удаляет их. Это происходит, если кадр табличного представления недостаточно велик, и вы действительно просматриваете переполненный контент.

Попробуйте установить для свойства .clipsToBounds в табличном представлении значение YES (в коде) или установите флажок "clip subviews" на нем (в IB). Таким образом, вы увидите фактические границы таблицы.

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