iOS - 如果Table为空,如何增加UITableView第一行的高度?

时间:2012-09-05 14:30:50

标签: ios uitableview

我是iOS开发的新手。

我想检查一下我的桌子是否为空。如果是,我想:


增加第一行的高度并显示"No new messages!"

摆脱桌面,只在页面中央显示"No new messages"


我该怎么做?

4 个答案:

答案 0 :(得分:2)

(假设你有一个数组,你想从中填充表视图。这是填充表视图的一种非常标准的方法。让我们称之为理论数组dataArr。)

在您的数据来源中:

- (NSUInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSUInteger)section
{
    if ([dataArr count] == 0) {
        // empty table
        return 1;
    }
    return [dataArr count];
}

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip
{
    UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:@"someCellID"];
    if (cell == nil)
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"someCellID"] autorelease];

    if ([dataArr count] == 0) {
        // empty table
        cell.textLabel.text = @"No new messages";
    } else {
        // configure as normally
    }
    return cell;
}

在你的代表中:

- (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)ip
{
    if ([dataArr count] == 0) {
        // empty table
        return 88.0f; // 2 times the normal height
    }
    // else return the normal height:
    return 44.0f;
}

答案 1 :(得分:1)

这应该有所帮助:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([tableView numberOfRowsInSection:1] == 0) {
        return 200;//some other height
    }else{
        return 44;
    }
}

答案 2 :(得分:1)

我想你有一系列试图显示的消息

您可以使用函数

为单元格定义自定义高度
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

       if (messages.count == 0)
           return 80;
       else
           return 44;
 }

然后,当您创建单元格时:(确保“无新消息”单元格具有与常规单元格不同的单元格标识符,以便您的单元格重用不会弄乱)

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (messages.count == 0) {
        // create the "No New Messages" cell
    }
    else {
        // create regular cells
    }
}

答案 3 :(得分:0)

您基本上想要检查数据来源,看看- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

中是否没有消息

例如:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([data count] == 0) return 100;
    else return 44;
}