Я работаю над сгруппированным UITableView, с 4 разделами по одной строке на раздел, и у меня странное поведение с ячейками.
Ячейки являются обычными UITableViewCells, но высота ячеек составляет около 60 - 80 пикселей.
Теперь табличное представление отрисовывает ячейки правильно с закругленными углами, но когда я выбираю ячейки, они отображаются синим цветом и прямоугольник . Я не знаю, почему ячейки ведут себя так, потому что у меня есть другой сгруппированный UITableView с пользовательскими ячейками и высотой 88 пикселей, и эти ячейки работают так, как должны.
Если я изменю высоту на высоту по умолчанию в 44 пикселя, ячейки будут вести себя как следует. Кто-нибудь знает об этом поведении и в чем причина?
Как я уже упоминал, я не делаю никаких причудливых вещей, я использую UITableViewCells по умолчанию в статическом, сгруппированном UITableView с 4 разделами по 1 строке в каждом разделе.
evangelion2100
Редактировать: ОК, вот соответствующие части моего кода. Поскольку я использую только фиксированное количество ячеек для этого табличного представления, я храню ячейки в 2d NSMutableArray. Я настроил ячейки в методе - (void) viewDidLoad, и соответствующие методы-делегаты получают доступ к массиву с сохраненными ячейками.
Я не вижу ничего, что могло бы вызвать такое странное поведение клеток, если бы они были выделены.
Edit2: Извините, причина, по которой я храню ячейки в массиве, заключается не только в числе ячеек. Если представление изменяется и UITableView появляется снова, ячейки будут заменены пользовательскими ячейками. Это реальная причина для хранения клеток. Это что-то вроде «добавить новое письмо» - тип поведения, как в приложении контактов с iphone.
-(void)viewDidLoad {
// set up the AccompanyingLecture cell
UITableViewCell *accompanyingLectureCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"AccompanyingLectureCell"];
accompanyingLectureCell.textLabel.textAlignment = UITextAlignmentCenter;
accompanyingLectureCell.detailTextLabel.textAlignment = UITextAlignmentCenter;
accompanyingLectureCell.textLabel.text = NSLocalizedString(@"New Accompanying Lecture", @"");
accompanyingLectureCell.detailTextLabel.text = NSLocalizedString(@"Lecturer, Time, Location, etc.", @"");
accompanyingLectureCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
accompanyingLectureCell.frame = CGRectMake(0, 0, 320, 82);
// initialize datasource for all four sections
datasource = [[NSMutableArray alloc] initWithObjects:[NSMutableArray arrayWithObject:[lecturerCell autorelease]], [NSMutableArray arrayWithObject:[lectureDetailsCell autorelease]], [NSMutableArray arrayWithObject:[timeAndLocationCell autorelease]], [NSMutableArray arrayWithObject:[accompanyingLectureCell autorelease]], nil];
* *} Тысяча двадцать-один
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
return [[datasource objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
}
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGRect currentFrame = [[[datasource objectAtIndex: indexPath.section] objectAtIndex:indexPath.row] frame];
return currentFrame.size.height;
}