user1096503
user1096503

Reputation: 91

xcode 4.2 iOS Tableview using storyboard

I created a iOS tabbed application using xcode 4.2 and storyboard. I added one tableviewcontroller with custom cell on it, when clicking the row, I want to open one tableviewcontroller, i used the following code below

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
categoryClass *cc = [datas objectAtIndex:indexPath.row];

[tableView deselectRowAtIndexPath:indexPath animated:NO];

iSubProducts *subProducts = [[iSubProducts alloc] init];
subProducts.title = cc.categoryName;
subProducts.catID = cc.categoryID;
[[self navigationController] pushViewController:subProducts animated:YES];
[subProducts release];


}

but when I click the row it gives me the following error:

* Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath

on my iSubProducts tableviewcontroller, i have the following:

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

iSubProductsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

productSubClass *cc = [datas2 objectAtIndex:indexPath.row];
NSLog(@"Product Name: %@", cc.productName);
cell.txtProductName.text  = cc.productName;
cell.txtProductDesc.text = cc.productDesc;

return cell;

}

I assume this is where the error occurs, the cell is returning a nil value. When I try to attach the iSubProducts tableviewcontroller using or from a button, it all works fine, but if its coming from row clicked, this error shows up.

Im quite new with iOS development, and maybe there is a error opening tableviewcontroller from a tableviewcontroller with a custom cell on it. I've been bangin my head for 2 days now and googled a lot, unfortunately I didn't find any solution. I'm pretty sure there's no error on the iSubProducts tableviewcontroller since its working if i tried pushing it from a button. Please I need advice on this one, Im so stucked right now with this issue. Thank you everyone.

Upvotes: 2

Views: 5104

Answers (2)

Daniel O
Daniel O

Reputation: 2850

You just have to create a prototype cell first in the designer so that you can drag out a segue from the cell to the destination view.

Upvotes: 0

DJPlayer
DJPlayer

Reputation: 3294

note sure how beneficial this is.. but just today I had trouble moving from one tableview to another view after clicking the row..

I stayed completely away from DidSelectRowAtIndexPath. Instead I used the segue (which was what I was aiming at).

this code snipped is from apple's storyboard example that uses tables.

http://developer.apple.com/library/ios/#samplecode/SimpleDrillDown/Listings/Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40007416-Classes_RootViewController_m-DontLinkElementID_10

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) {
            NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
            DetailViewController *detailViewController = [segue destinationViewController];
            detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row];
    }
}

This all assumign you start using the segues in the storyboard feature and make sure to use the identifiers for the segues.

Upvotes: 6

Related Questions