0

私の見解では、3 つの異なるテーブルがあります。最初の 2 つのテーブルでは、各セルに固定の高さがあります (たとえば、最初のテーブルの各セルには 30.0f、2 番目のテーブルの各セルには 45.0f など)、各テーブルのデータに従ってストーリーボードで調整しました。3 番目のテーブルでは、セルごとに異なる高さが必要です。方法を試してみました

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

ただし、この手法の問題は、このメソッドがテーブルごとに呼び出されることです。最初の 2 つのテーブルについては、ストーリーボードで高さを調整しましたが、どうすればよいかわかりません。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(tableView == myTable) {
    return 150.0;
}
}

else の場合に返すものがないため、すべてが失敗します。なにか提案を?

4

3 に答える 3

2

他のテーブルの高さを返す必要があります。

ストーリーボードで高さを設定している場合は、次のようにその高さにアクセスできます。

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == myTable)
        return 150.0;

    return tableView.rowHeight;
}

tableView.rowHeight は、ストーリーボードで設定した高さになります

于 2012-11-13T01:17:46.117 に答える
1

3つのテーブルビューすべてのView Controllerデリゲートを作成し、heightForRowAtIndexPathでどのテーブルがメソッドを呼び出したかを確認する必要があります。

したがって、viewDidLoad に以下を追加します。

myTable1.delegate = self;
myTable2.delegate = self;
myTable3.delegate = self;

その後:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath     *)indexPath {
if(tableView == myTable1) {
return 150.0;
}
else if(tableView == myTable2) {
return 75.0;
}
else if(tableView == myTable3) {
return 75.0;
}

}
于 2012-11-08T13:52:06.130 に答える
0

タグプロパティを使用するのはどうですか?各テーブルのタグを一意の番号に設定してから、次のように高さを返します。

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (tableView.tag == 1)
    {
        return 150;
    }
    return 250;
}
于 2012-11-13T04:12:38.577 に答える