0

アプリケーションで問題が発生しています。特に、UITableViewとそのUITableViewCells. ここに問題があります:カスタム を使用してUITableView内に を作成しました。私は2つのコントローラーが関係しています:UIViewUITableViewCell

  • ListController.m
  • ListCellController.m

IB では、セルの項目を、セル コントローラーのヘッダー ファイルで手動で作成した IBOutlets にリンクしました。

ListCellController.h/m のコードは次のとおりです。

// .h
@class Item;

@interface ListCellController : UITableViewCell
@property (nonatomic, strong) Item *item;   
@property (nonatomic, strong) IBOutlet UILabel *itemName;
@property (nonatomic, strong) IBOutlet UILabel *dates;
@property (nonatomic, strong) IBOutlet UILabel *itemId;     
@end

// .m

// @synthetize stuff

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (!self) {
        return nil;
    }

    self.textLabel.adjustsFontSizeToFitWidth = YES;
    self.selectionStyle = UITableViewCellSelectionStyleGray;

    return self;
}

- (void)setItem:(Item *)item
{
    _item = item;

    self.itemName.text = _list.itemName;
    self.itemId.text = _list.itemId;
    self.dates.text = [NSString stringWithFormat:@"Du %@ au %@", _list.date, _list.date];
}

ListController.h/m のコードは次のとおりです。

// .h
@interface ListController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    UITableView *cellList;
}
@property (strong, nonatomic) IBOutlet UITableView *cellList;
@end

// .m
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [_list count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"List cell";
    ListCellController *cell = [cellList dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell) {
        cell = [[ListCellController alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.item = [_items objectAtIndex:indexPath.row];
    cell.itemId.text = cell.item.itemId;
    cell.itemName.text = cell.item.itemName;
    cell.dates.text = [NSString stringWithFormat:@"From %@ to %@", cell.item.date, cell.item.date];
    return cell;
}


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cellList deselectRowAtIndexPath:indexPath animated:YES];
}

私が抱えている問題は、アプリケーションを起動してもセルに何も表示されないことです。コンテンツなし、エラーなし、何もない、空白のセル。

念のため言っておきますが、ここでも絵コンテを使用しています。

誰かがすでにこの問題に遭遇しましたか? どうすれば解決できますか?

ありがとう。

4

1 に答える 1

4

UITableView にカスタム セルがある場合は、次のようにする必要があります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"List cell";
    ListCellController *cell = (ListCellController *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

   if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ListCellController" owner:self options:nil];
        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (ListCellController *) currentObject;
                break;
            }
        }
    }

    cell.item = [_items objectAtIndex:indexPath.row];
    cell.itemId.text = cell.item.segmentCode;
    cell.itemName.text = cell.item.hotelName;
    cell.dates.text = [NSString stringWithFormat:@"Du %@ au %@", cell.item.checkin, cell.item.checkout];
    return cell;
}
于 2012-07-11T18:33:03.857 に答える