XIB内のuiviewcontroller内でテーブルビューを使用しています。コントローラはUItablecontrollerではないため、セルを直接構成することはできません。テーブルビューセルをドラッグすると、セル識別子などで構成できますが、XIBはテーブルビューセルを使用しません。どうすればそれらを結合できますか?ワークフローに直観に反しているように見えるので、コードは使用しません。
2 に答える
ストーリーボードを使用している場合は、VC 内にカスタム セルを直接追加して構成できます。ただし、xib を使用している場合は、カスタム セル クラスを作成してプログラムでロードするか、別の xib でカスタム セルを使用してカスタム クラスを作成し、xib からカスタム セルをロードするか、単純なカスタムで xib を作成する必要があります。テーブルセルとxibからのロード。UITableView で Apple Docs を参照
私が理解しているように、コードにカスタムセルが必要です。ストーリーボードを使用していない場合は、これを使用してみてください。ここでは、カスタム セル用のカスタム クラスを作成し、カスタムセルを xib に追加しました。別のxibを追加し、UITableViewCellをxibにドラッグアンドドロップしました(存在する場合はビューを削除します)。追加したばかりのセルをクリックし、ID インスペクタでクラス名を作成したカスタム クラスの名前に変更します。ファイルの所有者を選択し、そのクラスを変更しますカスタムセルが必要なクラスの名前に。(これは、テーブルビューのデリゲートとデータソースが接続されている特定のクラスでセルが使用されることを示しています)。セルが必要なクラスで、タイプ UITableViewCell の IBOutlet を追加します。これをxibで作成したセルに接続します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"CustomCell";
YourCustomCell *cell = (YourCustomCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell)
{
[[NSBundle mainBundle] loadNibNamed:@"YourCustomCell"
owner:self
options:nil];
cell = self.yourOutletCell;
self.yourOutletCell = nil;
}
}
また、xib を使用してロードしていて、カスタム セルの xib が複数ある場合は、次のように xib 名を介してそれらをロードできます。
NSArray *topLevelObjects;
topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"YourCustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[UITableViewCell class]])
{
cell = (YourCustomCell *) currentObject;
break;
}
}
静的セルの場合、このセルを Outlet でポイントしてから、cellForRowAtIndexPath