Thursday, February 16, 2012

Can"t show text in the UITableView


I have a view-based app that just does one thing : show a array in a TableView, but it doesn't work and I don't know why. Here's the code.




.h

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{
NSArray *array;
IBOutlet UITableView *table;
}

.m

-(void)viewDidLoad{
[super viewDidLoad];
array = [array initWithObjects:@"iPad", @"iTV", nil];

}

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}

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

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

cell.textLabel.text = [array objectAtIndex:indexPath.row];

return cell;
}



Any ideas why the TableView doesn't show the text? Thank you people!

2 comments:

  1. array = [array initWithObjects:@"iPad", @"iTV", nil];


    Should be

    array = [NSArray initWithObjects:@"iPad", @"iTV", nil];


    also make sure you call arrayInit as barley mentioned

    edit:
    Vince is right in pointing out it should either be

    [[NSArray alloc] initWithObjects:@"iPad", @"iTV", nil];


    or

    [NSArray arrayWithObjects:@"iPad",@"iTV",nil];


    depending on if you want to retain or have it auto released

    ReplyDelete
  2. Ill assume you are running under ARC

    NSIndexPath doesn't have a "row" property try

    NSInteger row = [indexPath indexAtPosition:1];
    cell.textLabel.text = [array objectAtIndex:row];

    ReplyDelete