Пользовательские TableViewCells на UIViewController? - PullRequest
1 голос
/ 06 августа 2011

Я пытаюсь отобразить пользовательский TableView на UIViewController, но получаю ошибку "UITableView dataSource должен вернуть ячейку из tableView: cellForRowAtIndexPath:"

Я подключил TableView к источнику данных и делегату.

Есть предложения по реализации или мне нужен UITableViewController?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";

CustomCell *cell = (CustomCell *)
                    [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    NSArray *topLevelObjects = [[NSBundle mainBundle]
                                loadNibNamed:@"CustomCell"
                                owner:nil options:nil];
    for (id currentObjects in topLevelObjects){
        if ([currentObjects isKindOfClass:[UITableView class]]){
            cell = (CustomCell *) currentObjects;
            break;
        }
    }                           
}
//---set the text to display for the cell---
cell.cellNameLabel.text = @"This is name";
cell.cellValueLabel.text = @"This is Value";
return cell;

1 Ответ

2 голосов
/ 06 августа 2011

ОШИБКА:

//NSArray *topLevelObjects = [[NSBundle mainBundle]
                                    loadNibNamed:@"CustomCell"
                                    owner:nil options:nil];

// у вышеуказанного владельца должен быть self

//  if ([currentObjects isKindOfClass:[UITableView class]]){ 

изменить эту строку на

   if ([currentObjects isKindOfClass:[CustomCell class]]){



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle]
                                    loadNibNamed:@"CustomCell"
                                    owner:self options:nil];//owner should be self

        for (id currentObjects in topLevelObjects){
            if ([currentObjects isKindOfClass:[CustomCell class]]){
                cell = (CustomCell *) currentObjects;
                break;
            }
        }                           
    }
        //---set the text to display for the cell---
    cell.cellNameLabel.text = @"This is name";
    cell.cellValueLabel.text = @"This is Value";

    return cell;

}
...