Assertion failure in UITableView configureCellForDisplay:forIndexPath:
cocoa-touch, ios, objective-c, uitableview
Solution
you are never creating a cell, you just try to reuse a dequeued cell. but as you never created one, there is none.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
static NSString *cellIdentifier = @"cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}
NSString *currentValue = [shareValues objectAtIndex:[indexPath row]];
[[cell textLabel]setText:currentValue];
return cell;
}
or try (only iOS 6+)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
static NSString *cellIdentifier = @"cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
NSString *currentValue = [shareValues objectAtIndex:[indexPath row]];
[[cell textLabel]setText:currentValue];
return cell;
}
from UITableView.h
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; // Used by the delegate to acquire an already allocated cell, in lieu of allocating a new one.
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier
forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); // newer dequeue method guarantees a cell is returned and resized properly, assuming identifier is registered
`-dequeueReusableCellWithIdentifier:` will always need a check, if a cell was returned, while `-dequeueReusableCellWithIdentifier:forIndexPath:` can instantiate new one.
Problem
I'm not sure where the error is here, having looked at other similar issues. I received an Assertion failure. ``` Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath: ``` I think it is something simple but hope someone can help. Below is my code: ``` #import "StockMarketViewController.h" @interface StockMarketViewController () @end @implementation StockMarketViewController @synthesize ShareNameText, ShareValueText, AmountText; @synthesize shares, shareValues; - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; { return [shares count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; { UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; NSString *currentValue = [shareValues objectAtIndex:[indexPath row]]; [[cell textLabel]setText:currentValue]; return cell; } ```