0

我是 iOS 开发的新手。

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


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

或者

摆脱表格,只显示"No new messages"在页面的中心。


我该怎么做?

4

4 回答 4

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;
}
于 2012-09-05T14:37:40.810 回答
1

这应该有助于:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([tableView numberOfRowsInSection:1] == 0) {
        return 200;//some other height
    }else{
        return 44;
    }
}
于 2012-09-05T14:33:25.803 回答
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
    }
}
于 2012-09-05T14:36:32.740 回答
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;
}
于 2012-09-05T14:34:48.643 回答