views:

90

answers:

2

hi there, im very new to iphone programming, im creating my first app, (a world cup one) the first view is a table view. the cell text label is filled with an array, so it shows all the groups (group a, B, c,ect) then when you select a group, it pulls on another UITableViewcontroller, but whatever i do i cant set the text label of the cells (e.g france,mexico,south africa, etc. infact nothin i do to the cellForRowAtIndexPath makes a difference , could someone tell me what im doing wrong please

Thanks

`here is my code for the view controller

    #import "GroupADetailViewController.h"

@implementation GroupADetailViewController


@synthesize groupLabel = _groupLabel;
@synthesize groupADetail = _groupADetail;
@synthesize teamsInGroupA;

#pragma mark Memory management
- (void)dealloc {
    [_groupADetail release];
  [_groupLabel release];
  [super dealloc];
}

#pragma mark View lifecycle
- (void)viewDidLoad {
  [super viewDidLoad];

  // Set the number label to show the number data
 teamsInGroupA  = [[NSArray alloc]initWithObjects:@"France",@"Mexico",@"Uruguay",@"South Africa",nil];
    NSLog(@"loaded");
      // Set the title to also show the number data
    [[self navigationItem]setTitle:@"Group A"];



    //[[self navigationItem]cell.textLabel.text:@"test"];

    //[[self navigationItem] setTitle[NSString String
}

- (void)viewDidUnload {
  [self setgroupLabel:nil];
}

#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView {
    // Return the number of sections in the table view
    return 1;
}

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in a specific section
    // Since we only have one section, just return the number of rows in the table
    return 4;
NSLog:("count is %d",[teamsInGroupA count]);
}

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

    // Reuse an existing cell if one is available for reuse
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier2];

    // If no cell was available, create a new one
    if (cell == nil) {
        NSLog(@"no cell, creating");
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier2] autorelease];
        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
    }
    NSLog(@"cell already there");

    // Configure the cell to show the data for this row
     //[[cell textLabel]setText:[NSString string

    //[[cell textLabel]setText:[teamsInGroupA objectAtIndex:indexPath.row]];
    //NSUInteger row = [indexPath row];


    //[cell setText:[[teamsInGroupA objectAtIndex:indexPath:row]retain]];
    //cell.textLabel.text:@"Test"   
    [[cell textLabel]setText:[teamsInGroupA objectAtIndex:indexPath.row]];
    return cell;
}


@end

#import "GroupADetailViewController.h"

@implementation GroupADetailViewController


@synthesize groupLabel = _groupLabel;
@synthesize groupADetail = _groupADetail;
@synthesize teamsInGroupA;

#pragma mark Memory management
- (void)dealloc {
    [_groupADetail release];
  [_groupLabel release];
  [super dealloc];
}

#pragma mark View lifecycle
- (void)viewDidLoad {
  [super viewDidLoad];

  // Set the number label to show the number data
 teamsInGroupA  = [[NSArray alloc]initWithObjects:@"France",@"Mexico",@"Uruguay",@"South Africa",nil];
    NSLog(@"loaded");
      // Set the title to also show the number data
    [[self navigationItem]setTitle:@"Group A"];



    //[[self navigationItem]cell.textLabel.text:@"test"];

    //[[self navigationItem] setTitle[NSString String
}

- (void)viewDidUnload {
  [self setgroupLabel:nil];
}

#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView {
    // Return the number of sections in the table view
    return 1;
}

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in a specific section
    // Since we only have one section, just return the number of rows in the table
    return 4;
NSLog:("count is %d",[teamsInGroupA count]);
}

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

    // Reuse an existing cell if one is available for reuse
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier2];

    // If no cell was available, create a new one
    if (cell == nil) {
        NSLog(@"no cell, creating");
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier2] autorelease];
        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
    }
    NSLog(@"cell already there");

    // Configure the cell to show the data for this row
     //[[cell textLabel]setText:[NSString string

    //[[cell textLabel]setText:[teamsInGroupA objectAtIndex:indexPath.row]];
    //NSUInteger row = [indexPath row];


    //[cell setText:[[teamsInGroupA objectAtIndex:indexPath:row]retain]];
    //cell.textLabel.text:@"Test"   
    [[cell textLabel]setText:[teamsInGroupA objectAtIndex:indexPath.row]];
    return cell;
}


@end
A: 

Are you setting a delegate properly on the second UITableView? Is it being loaded from an xib or are you just hard-coding it? Also, I don't see didSelectCellForIndexPath: anywhere. Is the second tableView even loading on screen?

Pyro2927
A: 

Hi, Your tableViewController must set the delegate property to an instance that conforms to UITableViewDelegate and a dataSource property to an object that conforms to UITableViewDataSource protocol. Off course those properties can be set to self: you can insert this

self.dataSource = self;
self.delegate = self;

in your viewDidLoad method.

If you don't do that the required methods (defined in protocols) you implemented are never called because the two properties are nil by default. Does it fix your problem ?

Vincent Zgueb