我相信正确的方法是这样的。我测试过它可以在Ipad和Iphone上使用。我们必须通过对uitableviewcell进行分类来创建自己的customCells:
在interfaceBuilder中开始...创建一个新的UIViewcontroller,将其称为customCell(当您在那里时,xib为志愿者)确保customCell是uitableviewcell的子类。
立即删除所有视图并创建一个视图,使其成为单个单元格的大小。使该视图子类成为customcell。现在创建其他两个视图(与第一个视图重复)。
转到连接检查器,找到2个IBOutlet,您现在可以连接到这些视图。
-backgroundView -SelectedBackground
将它们连接到您刚刚复制的最后两个视图,不必担心它们。扩展customCell的第一个视图,将标签和uitextfield放入其中。进入customCell.h并连接标签和文本字段。设置此视图的高度为75(每个单元格的高度)全部完成。
在您的customCell.m文件中,确保构造函数如下所示:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
self = [nibArray objectAtIndex:0];
}
return self;
}
现在创建一个UITableViewcontroller,并在此方法中使用customCell类,如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
// lets use our customCell which has a label and textfield already installed for us
customCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//cell = [[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
NSArray *topLevelsObjects = [[NSBundle mainBundle] loadNibNamed:@"NewUserCustomCell" owner:nil options:nil];
for (id currentObject in topLevelsObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (customCell *) currentObject;
break;
}
}
NSUInteger row = [indexPath row];
switch (row) {
case 0:
{
cell.titleLabel.text = @"First Name"; //label we made (uitextfield also available now)
break;
}
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 75.0;
}