UITableViewCells在滚动(Objective-C)
上清空我开始在表格视图中滚动时,UITableViewCells出现问题就会出现问题。
我已经看过Cells become empty after scrolling. (Xcode) - 但问题仍然存在。
1)我有一个popover视图控制器,它提供了一种登录某些管理的方法。成功登录后(尚未实现,LOGIN按钮只需一个直接到测试tableView - 稍后应从某个外部数据库提供)。
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) - 我在Attributes Inspector“LibraryAdminCell”中给出了标识符:
@property (strong, nonatomic) IBOutlet UILabel *cellLabel;
我错过了什么?
答案 0 :(得分:0)
它解决了。根据这个thread我必须通过弹出控制器中的属性获得对自定义UITableViewController的强引用,因为ViewController(作为tableView的DataSource)不会保留在内存中。
答案 1 :(得分:-1)
这种情况正在发生,因为你没有创建一个新的单元格,当tableview试图使一个单元格出列,并且它没有得到单元格,那么它应该创建要使用的单元格但是你不创建任何单元格,所以它返回nil。尝试下面的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
LibraryAdminTableViewCell *cell = (LibraryAdminTableViewCell*)[self.LibraryAdminTable dequeueReusableCellWithIdentifier:@"LibraryAdminCell"
forIndexPath:indexPath];
if (cell == nil)
{
cell = [[LibraryAdminTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"LibraryAdminCell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSString* trackList = [self.tblContentList objectAtIndex:indexPath.row];
cell.cellLabel.text = trackList;
return cell;
}