我正在尝试创建另一个视图中包含的自定义UITableView。我已经能够像我想要的那样设置视图了。我只是想知道为什么我最需要的两种方法(tableView:cellForRowAtIndexPath
和tableView:didSelectRowAtIndexPath
)不会被调用。请注意,我没有使用UITableViewController,但我使用UIViewController来控制tableView。
这是我的代码片段
- (void)loadView {
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
UIView * contentView = [[UIView alloc] initWithFrame:applicationFrame];
contentView.backgroundColor = [UIColor whiteColor];
self.view = contentView;
UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mainBackground.jpeg"]];
[self.view addSubview:backgroundImageView];
CGRect tableFrame = CGRectMake(40, 40, 240, 310);
self.listView = [[UITableView alloc] initWithFrame:tableFrame];
self.listView.dataSource = self;
self.listView.delegate = self;
self.listView.scrollEnabled = NO;
self.listView.rowHeight = 50;
self.listView.backgroundColor = [UIColor clearColor];
self.listView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellBgMid"]];
[self.view addSubview:self.listView];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellRow %@", indexPath.row);
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Did Select Row%@", indexPath.row);
[super tableView:tableView didSelectRowAtIndexPath:indexPath];
}
答案 0 :(得分:1)
您需要实现tableviewdelegate和tableviewsource协议。您需要将一个IBOutlet添加到UITableView,它是xib中用于表的参考出口,并在添加协议后将数据源设置为您的UIView控制器。
抱歉,我看到你没有使用xib。很奇怪您没有在设置数据源和委托的行上收到警告,因此您可能已经在那里拥有协议。
答案 1 :(得分:1)
你实现了-tableView:numberOfRowsInSection :?没有它,您将无法在表格视图中找到任何单元格。