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