我在Interface Builder(Storyboard)中创建了一个自定义UITableViewCell
,并通过#import CustomTableViewCell.h
将其导入我的项目。
一切正常,但单元格仅在选定状态下加载。
我想通过init在每一行加载单元格。
P.S。滑块和文本字段连接工作正常。我也完成了所有IB连接。
CustomTableViewCell.m
#import "CustomTableViewCell.h"
@implementation CustomTableViewCell
@synthesize sliderLabel, slider;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (IBAction)getSliderValuesWithValue:(UISlider *)sender
{
sliderLabel.text = [NSString stringWithFormat:@"%i / 100", (int) roundf(sender.value)];
}
@end
Further Code
- (CustomTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Kriterium";
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
cell.textLabel.text = [NSString stringWithFormat:@"%@", [listOfItems objectAtIndex:indexPath.row]];
return cell;
}
P.S。如果我在上面的方法中以编程方式添加一些按钮等,它可以工作。但我想在IB中设计行。必须有一个解决方案。
答案 0 :(得分:17)
好的......这里发生了奇怪的事情...... ;-)问题在于这一行:
cell.textLabel.text = [NSString stringWithFormat:@"%@", [listOfItems objectAtIndex:indexPath.row]];
离开它就可以了。我不得不在我的CustomCell中添加另一个UILabel
,我用文本填充。
<强>结论强>
填写标准UITableViewCell.textLabel.text
似乎会覆盖PrototypeCells。
......太多的定制伤害了。 ; - )
非常感谢! :)
答案 1 :(得分:0)
建议你不要去IB。只需将这些控件定义为属性,并在init方法中 - initWithStyle(CustomTableViewCell.m文件)使用其默认属性初始化UISlider:
UISlider *tempSlider = [[UISlider alloc] initWithFrame:frame];
tempSlider.selected = NO;
//define other properties as well
self.slider = tempSlider;
[self addSubview:self.slider];
[tempSlider release];
此外,您还可以将单元格选择样式设置为无。
cell.selectionStyle = UITableViewCellSelectionStyleNone;