100 пользовательских ячеек отображаются в tableView с UITextField - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть пользовательская ячейка, и я отобразил эту пользовательскую ячейку в табличном представлении с методом numberOfRowsInSection return 100.

Но когда я редактирую одну из textfield, она будет отражать изменения вдругие текстовые поля также.это мой код для cellForROwAtIndexPath

NSString *CellIdentifier = @"viewAllProductsGridCell";

ViewAllProductsGridCell *cell = (ViewAllProductsGridCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell == nil) {
    [[NSBundle mainBundle] loadNibNamed:@"ViewAllProductsGridCell" owner:self options:nil];

    cell = gridCell;    

}

Укажите, пожалуйста, как создать несколько экземпляров для каждой ячейки

1 Ответ

0 голосов
/ 10 ноября 2011

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

Обновление:

Что я обычно делаю для нескольких пользовательских ячеек:

  • Добавить пустой файл пера в проект
  • Установить владельца файла на UIViewController
  • Перетащите UITableViewCell в область пера
  • Соединить свойство представления «Владелец файла» с экземпляром UITableViewCell
  • Не забудьте установить ReuseID в свойствах UITableViewCell на предопределенное значение (например, textFieldCell)
  • Настройте свою ячейку так, как вам нужно, изменив ее свойства или добавив к нему элементы управления
  • Если вам нужен сложный контроль над пользовательской ячейкой, создайте подкласс от UITableViewCell в вашем проекте и добавить объявить все IBOutlets или IBActions вам нужно в нем; не забудьте поменять свойство класса вашей ячейки в кончике MyTextFieldCell

Когда вы закончите настройку, вы можете использовать следующий код:

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellID = @"textFieldCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if (cell == nil) {
        UIViewController *theController = [[UIViewController alloc] initWithNibName:@"TextFieldCell" bundle:nil];
        cell = (MyTextFieldCell *)[[theController.view retain] autorelease];
        [theController release];

        NSLog(@"Cell created %@", cell);
    }

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