Build a Drill Down TableView with arrays

Posted by skiria on Stack Overflow See other posts from Stack Overflow or by skiria
Published on 2010-05-08T17:10:33Z Indexed on 2010/05/08 17:18 UTC
Read the original article Hit count: 202

I'm trying to build a Drill down tableview to show the information that I have in a hierachy of arrays and classes. I have 3 classes:

class Video { nameVideo, id, description, user... }  
class Topic {nameTopic, topicID, NSMutableArray videos; }  
class Category {nameCategory, categoryID, NSMUtableArray topics}  

And then in my app delegate I defined

   //AppDelegate.h
 NSMutableArray categories;

The app display the tableView with nameCategory, but then, when I select a row it shows a tableview with 0 rows. If I check, for the second view the NumberOfRowsInSection, it returns me 0. I supose that the error is that I don't build correctly the provisional array called tableDataSource, I don't know the reason why it doesn't copy the new information on this array. `

- (void)viewDidLoad {
    [super viewDidLoad];

    appDelegate = (TSCAppDelegate *)[[UIApplication sharedApplication] delegate];

    //self.title = @"Categoria";

    if(CurrentLevel == 0) {

        //Initialize our table data source
        NSArray *tempArray = [[NSArray alloc] init];
        self.tableDataSource = tempArray;
        [tempArray release];

        self.tableDataSource = appDelegate.categories;

        self.navigationItem.title = @"Categoria";
        CurrentTitle = @"Categoria"; 
    }       


    else {
        self.navigationItem.title = CurrentTitle;

    }

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSLog (@"contador_ %i,", [self.tableDataSource count]); 
     //--> On the second view it is 0!

    return [self.tableDataSource count];
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
    }

    // Configure the cell.
    if (CurrentLevel == 0)
    {
        Category *aCategory = [self.tableDataSource objectAtIndex:indexPath.row];
        cell.text = aCategory.nameCategory;
    }

    if (CurrentLevel == 1)
    {
        Topic *aTopic = [self.tableDataSource objectAtIndex:indexPath.row];

        cell.text = aTopic.nameTopic; 
    }

    else if ([CurrentLevel == 0]){
        Topic *aTopic = [self.tableDataSource objectAtIndex:indexPath.row];

        cell.text = aTopic.nameTopic; 
        //NSLog(@"inside!!");
    }

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;



    return cell;

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //Get the actual Category
    Category *aCategory = [self.tableDataSource objectAtIndex:indexPath.row];
    //NSLog (@" CATEGORY: %@", aCategory.nameCategory);
    //NSLog (@" CATEGORY: %i", aCategory.categoryID);

    //NSLog (@" TOPICS OF CATEGORY: %i", [aCategory.topics count]); 

            //Prepare to tableview.
            navegaTableViewController *nvController = [[navegaTableViewController alloc] initWithNibName:@"navegaTableView" bundle:[NSBundle mainBundle]];

            //Increment the Current View
            nvController.CurrentLevel += 1;

            //Set the title;
            nvController.CurrentTitle = @"Topic"; 

            nvController.tableDataSource = aCategory.topics; 

            //Push the new table view on the stack
            [self.navigationController pushViewController:nvController animated:YES];

            [nvController release];


}

`

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about iphone