我正在尝试使用以下代码自定义UITableViewCell
的字体,以便填充tableview。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
}
// Set up the cell
int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
NSString *temp = [[NSString alloc] initWithString:[[stories objectAtIndex: storyIndex] objectForKey: @"title"]];
cell.textLabel.text = temp;
[[cell textLabel] setTextColor:[UIColor colorWithRed:154.0/255.0 green:14.0/255.0 blue:2.0/255.0 alpha:1]];
[[cell textLabel] setFont:[UIFont systemFontOfSize:12.0]];
return cell;
}
对于我的生活,我不知道为什么它不会改变字体!如果我在单元格文本中进行硬编码,例如cell.textLabel.text = @"TEST";
有什么建议吗?谢谢!
答案 0 :(得分:29)
首先,你应该自动释放你的细胞。你现在正在疯狂地泄露记忆。
其次,您应该更新tableView:willDisplayCellForRow:atIndexPath:
中的字体。如果您使用标准表格视图,它将对您的单元格进行更改(随机时间),您需要在tableView:willDisplayCellForRow:atIndexPath:
而不是数据源方法中执行字体更改,背景颜色等操作
另见此主题:What is -[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] for?
答案 1 :(得分:8)
@Jason Coco:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
}
答案 2 :(得分:4)
您可以尝试使用以下代码。
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellString = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellString];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellString];
}
cell.textLabel.text = values;
cell.textLabel.textColor = [UIColor colorWithRed:154.0/255.0 green:14.0/255.0 blue:2.0/255.0 alpha:1];
cell.textLabel.font = [UIFont systemFontOfSize:12.0];
return cell;
}
答案 3 :(得分:3)
尝试,
cell.textLabel.font = [UIFont systemFontOfSize:12.0];
cell.detailTextLabel.font = [UIFont systemFontOfSize:10.0];
答案 4 :(得分:1)
willDisplayCell:forRowAtIndexPath:可用于修改单元格的背景颜色,内容视图等,但textlabel和detailtextlabel的backgroundColor属性除外
在上述方法中进行这些修改总是一个好习惯
答案 5 :(得分:-2)
很简单,`
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
cell.textLabel.textColor = [UIColor grayColor]; //redColor greenColor etc.
}