1

UITableViewCellコンテンツビューに追加されたUIViewをその境界内に収める方法は?

つまり、単一の NIB ファイル (3 つのラベルを含む) を作成し、これを UITableView の各セルの表示に使用したいと考えています。cellForRowAtIndexPath メソッドでカスタム NIB ベースのビューをセルのコンテンツ ビューに追加していますが、最終結果として表示されるのは 1 つのカスタム NIB ベースのビューだけです (期待したようにテーブルビュー内に複数ではありません)。

各カスタム ビューが各 UITableViewCell 内にきちんと収まるようにするにはどうすればよいですか? また、カスタム NIB ビュー内のラベルにはワード ラップがあることに注意してください。

カスタム NIB ビュー用のフレームを作成する必要がありますか? その場合、座標を設定する方法が正確にはわかりません。UITableViewCell に相対的でしょうか? UILabelのワードラップが原因でカスタムビューの高さが変わる可能性がある場合は、UITableViewでこの高さを手動で計算する必要があると思いますか? (おそらく、動的/カスタム ビューの作成に移動し、InterfaceBuilder/NIB を使用するという概念を削除する必要があります)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    UIView *detailedView = [[[NSBundle mainBundle] loadNibNamed:@"DetailedAppointView" owner:self options:nil] objectAtIndex:0];
    [cell.contentView addSubview:detailedView];  // DOESN'T SEE TO WORK

    return cell;
}
4

1 に答える 1

1

これは、カスタム UITableViewCell を実装する必要がある場合の方法です。

UITableViewCellカスタムセル exのサブクラスを作成します。「マイカスタムセル」。次に、NIB ファイルを作成し、この NIB ファイル内にUITableViewCellタイプを挿入して「MyCustomCell」に変更し、クラス名と同じ名前の識別子を付けます。次に、すべてのサブビューをセルに挿入します。すべて IB で。

セルを自分の好みに合わせてポンピングした後:-)次のように使用します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCustomCell";
    static NSString *CellNib = @"MyCustomCell";

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
        cell = (MyCustomCell *)[nib objectAtIndex:0];
    }

    //Manipulate your custom cell here

    return cell;
}
于 2011-06-12T21:51:51.333 に答える