0

UITableViewコントローラにがあります。のセルにUITableViewはxibがあります。何らかの理由で、テーブルがロードされると、セルのビューが非表示になります。

セルを選択できます。セルがnilではなく、ビューもnilではないことがわかりますが、それでもセルは非表示になっています。

コードは次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{
    NSString *cellIdentifier = @"CategoryCell";
    CategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil){
        NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
        for (id obj in topObjects){
            if ([obj isKindOfClass:[CategoryCell class]]){
                cell = (CategoryCell*)obj;
            }
        }
    }

    id object;
    if (indexPath.row < items.count)
        object = [items objectAtIndex:indexPath.row];
    if ([object isKindOfClass:[MenuCategory class]]) {
        // Configure the cell   
        MenuCategory *cellInfo = (MenuCategory *)object;
        [cell setCategory:cellInfo];
        }
    else if([object isKindOfClass:[MenuSubCategory class]]){
        // Configure the cell   
        MenuSubCategory *cellInfo = [self.items objectAtIndex:indexPath.row];
        [cell setSubCategory:cellInfo];
    }
    return cell;
}
4

2 に答える 2

0

初め:

NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
        for (id obj in topObjects){
            if ([obj isKindOfClass:[CategoryCell class]]){
                cell = (CategoryCell*)obj;
            }
        }

これを次のように置き換えます

[[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];

そして、xibの所有者になるクラスでIBOutletを宣言します。このコンセントはあなたの細胞を指すことができます。次にFiles Owner、Cell XIB内の(上記のコードが含まれるクラスである必要があります)をセルに接続する必要があります。次に、(たとえばプロパティを宣言した後)セルを参照できます。

self.myCellOutlet;

xib内のすべてのオブジェクトを列挙する必要はありません。

これでよろしいですか

[cell setSubCategory:cellInfo];

動作しますか?

あなたが本当にあなたの細胞がちょうど隠されていると思うなら、あなたはそれを送ろうとしましたか?

[cell setHidden:NO];

それが事実であるかどうか、そしてエラーが可視性の状態と変わらないかどうかを確認するためだけですか?

于 2012-06-17T10:35:21.577 に答える
0

お時間を無駄にしてすみません。

解決策はコードとは何の関係もありません。

テーブルはセルよりも狭かった。したがって、テキスト(セルの左側に書かれている)はテーブルの境界の外にありました。そしてそれが画面から欠落していた理由です。

于 2012-06-17T11:21:52.603 に答える