Вот как это делается, я считаю, правильный путь. Он работает на Ipad и Iphone, как я это проверял. Мы должны создать наши собственные customCells, классифицируя uitableviewcell:
начните с interfaceBuilder ... создайте новый UIViewcontroller, назовите его customCell (добровольно отправьте xib, пока вы там) Убедитесь, что customCell является подклассом uitableviewcell
Сотрите все виды сейчас и создайте один вид размером с отдельную ячейку. сделать это представление подклассом customcell. Теперь создайте два других представления (дублируйте первое).
Перейдите к своему инспектору соединений и найдите 2 IBOutlets, которые вы можете подключить к этим представлениям сейчас.
-backgroundView -SelectedBackground
соедините их с двумя последними представлениями, которые вы только что продублировали, и не беспокойтесь о них. самое первое представление, которое расширяет customCell, поместите ваш ярлык и поле uitext в него. Зайдите в 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;
}