我正在使用XCode版本8.0开发iOS 10。
在我的.h文件中,我有
@property (nonatomic, strong) NSMutableArray *items;
这是我的TableView的数据源。
在viewDidLoad中,我调用了我的函数[self setupTableViewItems];
self.items = [[NSMutableArray alloc] initWithCapacity:4];
self.items = [CellModel rows];
此数组中的每个对象都代表我的单元格,例如:
CellModel *screenshot = [[CellModel alloc]
initWithParams: @"Screenshot"
subTitle: @"Select a screenshot"
image: [UIImage imageNamed: @"screenshot"]
viewName: Pictures
section: 3];
这是方法签名,
+ (NSMutableArray *)rows;
和重要的实现细节(每个对象都是CellModel类型):
NSMutableArray *screenshots = [[NSMutableArray alloc] initWithCapacity:3];
[screenshots addObject:quickScreenshot];
[screenshots addObject:selectScreenshot];
[screenshots addObject:selectedScreenshotsCollectionView];
.....
NSMutableArray *dataSource = [[NSMutableArray alloc] initWithCapacity:4];
[dataSource addObject:interactions];
[dataSource addObject:screenshots];
[dataSource addObject:problem];
[dataSource addObject:details];
return [dataSource mutableCopy];
tableView第一次正确加载数据,视图看起来很棒,没有任何遗漏。
当我开始滚动时,我立即注意到单元格的附件视图开始混淆,特别是在第3节,它们被定义为没有一个附加视图,但仍然混淆并获得其他单元格的附件视图。
然而,一旦方向改变,或者我开始上下滚动几次,UI就会被锁定,没有崩溃,没有来自XCode的消息。记忆力正在增长,这显然是一个泄漏,但在试图找到它几个小时后,我很绝望。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
GenericTableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:REPORT_CELL
forIndexPath: indexPath];
CellModel *current = [[self.items objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.titleLabel.text = current.title;
cell.subtitleLabel.text = current.subTitle;
cell.icon.image = current.image;
if(indexPath.section == 0 && indexPath.row == 0)
cell.accessoryView = self.lastInteractionSwitch;
else if(indexPath.section == 0 && indexPath.row == 1)
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
else if(indexPath.section == 1 && indexPath.row == 0)
cell.accessoryView = self.lastScreenshotSwitch;
else if(indexPath.section == 1 && indexPath.row == 1)
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
else if(indexPath.section == 2 && indexPath.row == 0)
cell.accessoryView = self.starRatingView;
else if(indexPath.section == 2 && indexPath.row == 1)
cell.accessoryView = self.speechToTextButton;
else cell.accessoryView = UITableViewCellAccessoryNone;
return cell;
我的自定义单元格有三个属性,即正在设置的属性。自定义单元格的类型为“Subtitle”,属性在IB中连接。
首先,我认为这是因为我没有指针引用,添加它,尝试使用非常明显的(强||保留),继续使用NSArray作为数据源,同样的问题。改变了细胞(100%苹果,100%定制),同样的问题。
这里发生了什么?
答案 0 :(得分:0)
单元格行的高度是多少。?
您是否也检查过该对象的第3节数据?
CellModel *current = [[self.items objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.titleLabel.text = current.title;
cell.subtitleLabel.text = current.subTitle;
cell.icon.image = current.image;