1

我正在尝试创建一个包含在另一个视图中的自定义 UITableView。我已经能够按照我想要的方式设置视图。我只是想知道为什么我最需要的两种方法(tableView:cellForRowAtIndexPathtableView: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];
}
4

2 回答 2

1

您需要实现 tableviewdelegate 和 tableviewsource 协议。您将需要向 UITableView 添加一个 IBOutlet,它是 xib 中 table vie 的参考出口,并在添加协议后将数据源设置为您的 UIView 控制器。

对不起,我看到你没有使用 xib。奇怪的是,您在设置数据源和委托的行上没有收到警告,因此您可能已经在那里有了协议。

于 2012-07-30T02:33:14.727 回答
1

你实现了 -tableView:numberOfRowsInSection: 吗?没有它,您将无法在表格视图中包含任何单元格。

于 2012-07-30T02:55:10.060 回答