0

私はiOS開発の初心者です。

テーブルが空かどうかを確認したい。もしそうなら、私はしたい:


1行目の高さを上げて表示"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 に答える