我正在使用以下代码UIView
从 a实例化 a XIB
,然后将其添加到选定UITableViewCell
的显示中。当我运行代码并触摸单元格时,我可以浏览代码并看到所有内容都正确实例化(没有什么是 nil),但视图从未显示。
我有一个 UIView,上面有几个按钮。在 Interface Builder 中,我将 UIView 设置为使用 UIView 的子类,该子类目前没有任何代码,除了 Xcode 生成的样板。我希望有人能指出我在使用此代码使其正常工作时所犯的任何明显错误。
请注意,有一次我在 UITalbeViewCell 中显示了 UIView,但在一些重构过程中我搞砸了一些东西,最终重新编写了代码来处理这个问题。发生这种情况时,我无法再在单元格中显示 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;
}
}
}
更新
为了测试并查看是否是我的 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;
}