UITableViewCells получить опустели на скроллинга (Objective-C)UITableViewCells получить опустели на скроллинга (ObjC)
У меня возникают проблемы с UITableViewCells получения опустели, как только я начало для прокрутки в виде таблицы.
Я уже посмотрел на Cells become empty after scrolling. (Xcode) - однако проблема все еще сохраняется.
1) У меня есть контроллер popover view, который представляет способ входа в систему администрирования. При успешном входе в систему (который еще не был реализован, кнопка LOGIN просто берет один прямо в тестовую таблицуView, которую позже следует подавать из некоторой внешней базы данных).
2) После успешного входа в систему имя пользователя входа в popover удаляется, и пользовательский UITableViewController входит в игру со своим XIB.
3) Этот UITableViewController использует пользовательский UITableViewCell - поскольку ячейки прототипа в этой конфигурации невозможно.
Все это работает до такой степени, что я прокручиваю таблицу - и все ячейки по какой-то причине опустели.
Вот код бежать вниз (я оставляю на очевидное, например, свойства и таблицы раздела и т.д. расстановок):
1) customPopUpViewController (XIB, .h, .m):
- (IBAction)loginButtonPressed:(UIButton *)sender {
UITableViewController *libraryTableViewController = [[LibraryAdminTableViewController alloc]initWithNibName:@"LibraryAdminTableViewController" bundle:nil];
libraryTableViewController.view.frame = CGRectMake(0, 179, libraryTableViewController.view.frame.size.width, libraryTableViewController.view.frame.size.height);
[self.view addSubview:libraryTableViewController.view];
}
2) LibraryAdminTableViewController (XIB, .h, .m):
- (void)viewDidLoad {
[super viewDidLoad];
self.LibraryAdminTable.delegate = self;
self.LibraryAdminTable.dataSource = self;
self.tblContentList = [[NSMutableArray alloc]init];
self.tblContentList = [NSMutableArray arrayWithObjects:@"Sync Pack 1",@"Sync Pack 2",@"Sync Pack 3", nil];
[self.LibraryAdminTable registerNib:[UINib nibWithNibName:@"LibraryAdminTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"LibraryAdminCell"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
LibraryAdminTableViewCell *cell = [self.LibraryAdminTable dequeueReusableCellWithIdentifier:@"LibraryAdminCell" forIndexPath:indexPath];
NSString* trackList = [self.tblContentList objectAtIndex:indexPath.row];
cell.cellLabel.text = trackList;
return cell;
}
3) LibraryAdminTableViewCell (XIB, .h, .m) - я дал идентификатор в инспектора Атрибуты «LibraryAdminCell»:
@property (strong, nonatomic) IBOutlet UILabel *cellLabel;
Что мне не хватает?
Не могли бы вы проверить, будет ли каждый раз, когда вызывается cellForRowAtIndexPath, на самом деле возвращается ячейка вместо нулевого? – TMob
yep, у меня был этот первый, такая же проблема: LibraryAdminTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @ "LibraryAdminCell"]; if (cell == nil) { cell = [[LibraryAdminTableViewCell alloc] initWithStyle: UITableViewCellStyleSubtitle reuseIdentifier: @ "LibraryAdminCell"]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } – GermanGangsta
Typecast вот так. LibraryAdminTableViewCell * cell = (LibraryAdminTableViewCell *) [tableView dequeueReusableCellWithIdentifier: @ "LibraryAdminCell"]; Это может быть проблемой.Поскольку первый раз вышеуказанный код инициализирует ячейку, но второй раз ее нужно повторно использовать. Поэтому попробуйте с этим. –