0

xib ファイルを使用してカスタムUIViewA を作成すると、次の方法で正しくロードできます。


    NSArray *starsNib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:nil options:nil];
    A *starsView = starsNib[0];
    [self.view addSubview:starsView];

次に、ストーリーボード ファイルで、このカスタム ビュー A を に追加しUITableViewCellますcontentView。テーブルビューの読み込み中に、カスタム ビュー A に xib ファイルに追加されたサブビューがないことがわかりました。initWithCoder:また、A が返されたときに、子ビューがないこともわかりました。
ところで、xib ファイルで、 と の両方をカスタム ビュー A クラスに設定parent viewfile's ownerました。
なぜこれが起こるのか、なぜ戻ったときにサブビューがロードされないのか知りたいinitWithCoder:ですか?

4

2 に答える 2

0

ビューは、XIB ではなく、ストーリーボードから読み込まれているためです。ストーリーボードでは、ビューは空です。

ストーリーボードからビューを削除してコードにロードする必要があります。これは、セルごとに 1 回だけ実行する必要があるため、おそらくセルがインスタンス化されるときに行います。

于 2015-04-22T06:41:39.823 に答える
0

cellForRowAtIndexPath:カスタムUITableViewCellクラスのファイル所有者を持つXibを使用してカスタムtableViewCellを作成し、次のようなメソッドを使用できます

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        // Load the top-level objects from the custom cell XIB.
        NSArray * starsNib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil];
        cell = starsNib[0];
    }
    return cell;
}
于 2015-04-22T06:54:39.050 に答える