Я использую следующий код, например, UIView
, из XIB
, а затем добавьте его к выбранному UITableViewCell
для отображения. Когда я запускаю код и касаюсь ячейки, я могу пройти через код и увидеть, что все настроено правильно (ничего нет), и все же представление никогда не отображается.Отобразить UIView в UITableViewCell прагматично
У меня есть UIView с несколькими кнопками на нем. В Interface Builder я установил UIView для использования подкласса UIView, который в настоящий момент не имеет в нем никакого кода, кроме плиты котла, сгенерированной Xcode. Я надеюсь, кто-то может указать на очевидные ошибки, которые я сделал в использовании этого кода, чтобы заставить это работать.
Обратите внимание, что в какой-то момент у меня был UIView, отображаемый в UITalbeViewCell, но во время некоторого рефакторинга я испортил некоторые вещи и в итоге переписал код, чтобы справиться с этим. Когда это произошло, я больше не мог отображать UIView внутри ячейки.
@implementation HZRunwayViewController
{
EKEvent *currentEvent;
BOOL editingEvent;
HZEventDrawerView *eventDrawer;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Check if we are touching an event
if (indexPath.section == 0 && [self.eventsForCurrentDay count]) {
// Grab the selected cell and make sure it's an event cell
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[HZEventTableViewCell class]]) {
// Setup our event cell and our action drawer for use.
HZEventTableViewCell *eventCell = (HZEventTableViewCell *)cell;
if (!eventDrawer) {
eventDrawer = (HZEventDrawerView *)[[NSBundle mainBundle] loadNibNamed:@"HZEventDrawerView" owner:self options:nil][0];
}
eventDrawer.bounds = eventCell.bounds;
NSLog(@"X:%f Y:%f Width: %f Height: %f", eventDrawer.bounds.origin.x, eventDrawer.bounds.origin.y, eventDrawer.bounds.size.width, eventDrawer.bounds.size.height);
[eventCell.contentView addSubview:eventDrawer];
[eventCell bringSubviewToFront:eventDrawer];
eventDrawer.hidden = NO;
}
}
}
Update
Для того, чтобы проверить и посмотреть, если это был мой файл XIB или суб-класс вызывает проблему, я перестал использовать его, инстанс в UIView, добавил UIButton к нему а затем добавили его в подкласс Cell.contentView. Когда я касаюсь клетки, ничего не происходит.
// Grab the selected cell and make sure it's an event cell
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[HZEventTableViewCell class]]) {
// Setup our event cell and our action drawer for use.
HZEventTableViewCell *eventCell = (HZEventTableViewCell *)cell;
if (!eventDrawer) {
eventDrawer = [[UIView alloc] initWithFrame:eventCell.bounds];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, 25, 44)];
[eventDrawer addSubview:button];
}
eventDrawer.frame = eventCell.bounds;
NSLog(@"X:%f Y:%f Width: %f Height: %f", eventDrawer.bounds.origin.x, eventDrawer.bounds.origin.y, eventDrawer.bounds.size.width, eventDrawer.bounds.size.height);
[eventCell.contentView addSubview:eventDrawer];
[eventCell bringSubviewToFront:eventDrawer];
eventDrawer.hidden = NO;
}
Я хотел также добавить результаты печати NSLog. Значения X и Y равны 0: 0, а значения Width и Height равны 320: 46. –