นี่เป็นวิธีที่ทำฉันเชื่อว่าวิธีที่ถูกต้อง มันใช้งานได้กับ Ipad และ Iphone ตามที่ฉันทดสอบ เราต้องสร้าง customCells ของเราเองโดยการจัดคลาส uitableviewcell:
เริ่มต้นใน interfaceBuilder ... สร้าง UIViewcontroller ใหม่เรียกมันว่า customCell (อาสาสมัครสำหรับ xib ในขณะที่คุณอยู่) ตรวจสอบให้แน่ใจว่า customCell เป็น subclass ของ uitableviewcell
ลบมุมมองทั้งหมดทันทีและสร้างมุมมองเดียวทำให้ขนาดของแต่ละเซลล์ ทำให้มุมมอง subclass customcell ตอนนี้สร้างมุมมองอีกสองมุมมอง (ทำซ้ำมุมมองแรก)
ไปที่ผู้ตรวจสอบการเชื่อมต่อของคุณและค้นหา IBOutlets 2 รายการที่คุณสามารถเชื่อมต่อกับมุมมองเหล่านี้ได้ทันที
-backgroundView -SelectedBackground
เชื่อมโยงสิ่งเหล่านี้กับมุมมองสองรายการสุดท้ายที่คุณเพิ่งทำซ้ำและไม่ต้องกังวลเกี่ยวกับมุมมองเหล่านี้ มุมมองแรกที่ขยาย customCell ใส่ป้ายกำกับและ uitextfield ของคุณไว้ข้างใน ไปที่ customCell.h และเชื่อมโยงป้ายกำกับและฟิลด์ข้อความของคุณ ตั้งค่าความสูงของมุมมองนี้เพื่อบอกว่า 75 (ความสูงของแต่ละเซลล์) เสร็จสิ้นแล้ว
ในไฟล์ customCell.m ของคุณตรวจสอบให้แน่ใจว่า Constructor มีลักษณะดังนี้:
- (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;
}