0

nib ファイルを使用するのはこれが初めてで、簡単な UI 編集のためにストーリーボードを肥大化させずに 2 つのビューを切り替える必要があったため、nib ファイルを使用しています。すべてを分離できるように、子ビューコントローラーを使用しました。子コントローラーの 1 つには、テーブル ビュー デリゲートとデータ ソースが含まれます。そこで、IB で 1 つのビューを持つ nib を作成しました。テーブル ビューをドラッグしましたが、既におかしな動作をしています。

ストーリーボード ビュー コントローラーにドラッグされたテーブル ビューは次のようになります。

通常のストーリーボード テーブルビュー

そして、これは nib ファイルでどのように見えるかです:

ペン先テーブルビュー

デフォルトのカリフォルニアのデータがまだ残っています。「Table View Prototype」と表示されないのはなぜですか?

とにかくセルを追加しようとしましたが、できませんでした。最初の画像は通常の状態で、セルがネストされています。ただし、ペン先では、テーブル ビューには入りません。

ノーマルセルインサート ペン先セルインサート

カスタム セルを使用してテーブル ビューを作成したいのですが、ペン先を使用するのはこれが初めてなので、何が問題なのか、何か不足しているのかわかりません。

4

2 に答える 2

1

xib ファイルの Table View 内に Table View Cell をネストできないのは正常です。xib ファイルを使用したカスタム セルへの可能なアプローチの 1 つは、サブクラスを作成し、UITableViewCellそれを xib ファイル内のカスタム セルのファイル所有者として設定することです (セルの xib ファイルを作成します)。UITableViewCell次に、カスタム セルとカスタムサブクラスの UI 要素の間にアウトレットを作成できます。

次の例ではMyCustomCell、セルを含む xib ファイルの名前として、また から派生したカスタム クラスの名前として を使用しますUITableViewCell

セルをテーブル ビューに登録するには、これをUITableViewControllerサブクラスに追加します。

- (void)viewDidLoad 
{
    [super viewDidLoad];

    UINib *cellNib = [UINib nibWithNibName:@"MyCustomCell" bundle:nil];
    [self.tableView registerNib:cellNib forCellReuseIdentifier:@"MyCustomIdentifier"];
    ...
}

最後に、tableView:cellForRowAtIndexPath:メソッドで、識別子を使用してカスタム セルをデキューし、以前に作成したアウトレットを使用してそのビジュアル プロパティを設定できます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomIdentifier"];

    // Configure cell using its outlets

    return cell;
} 
于 2013-05-10T19:29:37.617 に答える