gpt4 book ai didi

objective-c - UITableView 顶部不需要的空白 UITableViewCell

转载 作者:可可西里 更新时间:2023-11-01 04:48:52 26 4
gpt4 key购买 nike

我有一个 UITableView,它的顶部有 1 个空白行,我不知道为什么。这是相关的代码,你们知道这里发生了什么吗?

UITableView 加载时没有内容。此方法是在以下时间之后启动每次数据刷新的方法:

- (IBAction)updateButton:(id)sender 
{
if (questionsTextField.isFirstResponder) {
[questionsTextField resignFirstResponder];
[self assignQuestionsCount];
}

if (currentNumberOfQuestions > 0) {
// do work calculating
currentTest = nil;

currentTest = [self retrieveCurrentTest];
currentTest.numberOfQuestions = currentNumberOfQuestions;
currentTest.decimalPlacesToDisplay = 0;
currentTest.roundingBreakPoint = 0.5;

currentGradeScale = nil;
currentGradeScale = [currentTest generateGradingScale];
[scoresTableView reloadData];
}
else {
// my error handling on text boxes here....
}
}

这是我对 UITableView 方法的实现:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.currentGradeScale count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"scoresIndentifier";
static int missedTag = 1, correctTag = 2, gradeTag = 3;

UILabel *missedLabel, *correctAndTotalLabel, *letterGradeLabel;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

//if a cell does not exist, get it then initialize it
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

// populate data
missedLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100, 50)];
missedLabel.tag = missedTag;
missedLabel.font = [UIFont systemFontOfSize:14.0];
missedLabel.textAlignment = UITextAlignmentCenter;
missedLabel.textColor = [UIColor blackColor];
missedLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth;
[cell.contentView addSubview:missedLabel];

}
// if it does, just reassign the properties
else {
missedLabel = (UILabel *)[cell.contentView viewWithTag:missedTag];
}

missedLabel.text = [[self.currentGradeScale objectAtIndex:indexPath.row] determineLetterGrade:0.5];

return cell;
}

谢谢大家的帮助,我真的很感激。

最佳答案

您可能已经考虑过的最明显的解释是表格的第一行设置了空白数据(即 self.currentGradeScale objectAtIndex:0 返回 nil 或 @""表示“确定的字母等级 0.5”。 )

如果您在调试器中的 cellForRowAtIndexPath 上为标签文本赋值的那一行放置断点,它是否肯定为第 0 行设置了非空/非空白值?

另请注意,missedLabel 存在内存泄漏 - 将其作为 subview 添加到单元格将保留它,因此您应该在分配时自动释放,或在添加为 subview 后释放。

关于objective-c - UITableView 顶部不需要的空白 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com