I’m new to iOS developing, I have a UITableViewController and I want to load NSMutableArray data in the table, but it does load data and shows an empty table. It’s the code:
#import "PhotosTableViewController.h"
@implementation PhotosTableViewController
NSMutableArray *photos;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
photos = [[NSMutableArray alloc] init];
Photo *pic = [[Photo alloc] init];
[pic setName:@"over look"];
[pic setFilename:@"overlook.png"];
[pic setNotes:@"this is notw!"];
[photos addObject:pic];
pic = [[Photo alloc] init];
[pic setName:@"olives"];
[pic setFilename:@"olives.png"];
[pic setNotes:@"this is notw!"];
[photos addObject:pic];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [photos count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PhotoCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
Photo *current=[photos objectAtIndex:indexPath.row];
cell.textLabel.text=[current name];
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
}
@end
Add
[self.view reloadData];at the end of yourviewDidLoadimplementation.If that does not help already, I suspect that your viewController is actually not of type
PhotoTableViewController. Make sure that is correctly setup. If done via InterfaceBuilder, check the type of the viewController and make sure it saysPhotoTableViewController.