cellForRowAtIndexPath函数的异常 - UITableView

时间:2013-11-20 13:58:11

标签: ios objective-c uitableview

我想在“UITableView”上显示数据列表。

当我运行代码时,我收到以下错误:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 
'unable to dequeue a cell with identifier Cell - must register a nib or a class for the 
identifier or connect a prototype cell in a storyboard'

当我运行下面的代码时,我得到上面给出的错误。该错误被抛出 cellForRowAtIndexPath函数。我该如何解决这个错误?

@interface TheViewController ()

@property (strong, nonatomic) NSMutableArray *myTData;
@property (weak, nonatomic) IBOutlet UITableView *tableViewOutlet;

@end

@implementation TheViewController
- (void)viewDidLoad
{
    self.tableViewOutlet.delegate = self;
    self.tableViewOutlet.dataSource = self;
    self.tableViewOutlet.scrollEnabled = YES;
    self.myData = [[NSMutableArray alloc] initWithObjects:@"obj1", @"obj2", nil];
    [self.tableViewOutlet reloadData];
    [super viewDidLoad];
}

#pragma mark UITableViewDataSource methods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section {
    return myData.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"hede"];
    }
    [cell.textLabel setText: [myData objectAtIndex:indexPath.row]];
    [cell.detailTextLabel setText:@"hede hodo"];
    //
// Configure the cell..
    return cell;
}

#pragma mark UITableViewDelegate methods

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1;
}

@end

2 个答案:

答案 0 :(得分:1)

例外正是它所说的。

在iOS 5中,您可以调用[tableView dequeueReusableCellWithIdentifier:CellIdentifier],如果没有返回,则创建一个。新调用-dequeueReusableCellWithIdentifier:forIndexPath:应该已注册NIB或单元类,然后它将始终成功。

您应该致电

- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier

- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier

-viewDidLoad方法中。

答案 1 :(得分:0)

在故事板中,选择原型单元格,转到检查器并为单元格提供标识符“单元格”或任何您想要的内容,只要您在此处具有相同内容:static NSString *CellIdentifier = @"Cell";