1

別のビューに含まれるカスタム UITableView を作成しようとしています。ほぼ希望どおりのビューを設定することができました。しかし、最も必要な2 つのメソッド (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];
}
4

2 に答える 2

1

tableviewdelegate および tableviewsource プロトコルを実装する必要があります。プロトコルを追加したら、テーブル vie の xib の参照アウトレットである UITableView に IBOutlet を追加し、データ ソースを UIView コントローラーとして設定する必要があります。

申し訳ありませんが、xib を使用していないようです。データ ソースとデリゲートを設定する行で警告が表示されないのは興味深いことです。そのため、既にプロトコルがそこにある可能性があります。

于 2012-07-30T02:33:14.727 に答える
1

-tableView:numberOfRowsInSection: を実装しましたか? これがないと、テーブル ビューにセルを含めることができません。

于 2012-07-30T02:55:10.060 に答える