为什么没有调用rowHeight数据源方法

时间:2010-09-08 09:01:46

标签: iphone cocoa-touch uitableview

我的热切梦想是以编程方式确定具有不同行大小的UITableView。我已经阅读了UITableViewDataSource文档,并实现了这些方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

,我们可以在这里看到:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return (CGFloat) 200.0f;
}

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* test = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil ];

    test.textLabel.text = @"TEST";

    CGRect ffframe = test.frame;

    ffframe.size.height *= 200.0f;

    test.frame = ffframe;

    return test;        
}

这些只是试图制作一个简单的表,一行,高度为200.0。我尝试在委托方法中返回高度,并明确设置它。两者都不起作用。

我尝试在调试器中捕获heightForRow方法,似乎永远不会被调用。

我的表行始终是我在界面构建器中设置的大小。

我将数据源连接正确,否则它将无法获得行和textLabel。

2 个答案:

答案 0 :(得分:6)

这是一个委托方法,所以请确保你有

self.tableview.delegate = self;

在viewDidLoad中,或者让xib中的tableview委托属性链接到控制器。

答案 1 :(得分:2)

小心,此方法是tableview delegate而不是dataSource方法。