2012-02-05 3 views
0

Я новичок в разработке iOS, у меня есть UITableViewController, и я хочу загрузить данные в таблице NSMutableArray, но он загружает данные и показывает пустую таблицу. Это код:UITableViewController не загружает данные

#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 
+1

В viewDidLoad попытке присвоить table.dataSource и table.delegate с самим собой. – Mrunal

+0

как вы создаете этот viewController? Показать код. Потому что этот фрагмент кода работает. –

+0

Я вытащил его из «Элементы управления». – Maysam

ответ

1

Добавить [self.view reloadData]; в конец вашего viewDidLoad осуществления.

Если это уже не помогает, я подозреваю, что ваш viewController на самом деле не типа PhotoTableViewController. Убедитесь, что она правильно настроена. Если это делается через InterfaceBuilder, проверьте тип viewController и убедитесь, что он говорит PhotoTableViewController.

enter image description here

+0

Я думаю, что там это большая проблема, она не запускается 'PhotoTableViewController.m', она не показывает 'foo' в отладчике, когда я помещаю' NSLog (@ "foo") 'в' didViewLoad' – Maysam

+0

Является ли viewController экземпляром как PhotoT ableViewController? Если создается экземпляр через XIB-файл, проверьте конструктор интерфейса и посмотрите, настроен ли этот viewController типа PhotoTableViewController. Я подозреваю, что он говорит UITableViewController, а не PhotoTableViewController. – Till

+0

Я использую раскадровку, позвольте мне ее найти:/ – Maysam

1

Le Вздох вы будете удивлены, сколько UITableView вопросы решаются с «Сделайте ваш класс делегата и DataSource.». В IB перетащите выходы в файл владельца. В коде установите tableView.delegate = self; и tableView.datasource = self;

+0

Хотя это уже должно быть значение по умолчанию для UITableViewController. –

+0

Это SDK 4.2.1, можете ли вы изменить мой код? Я не могу сделать то, что вы сказали :( – Maysam

+0

Maysam, у меня нет ответа на редактирование сообщения. Используете ли вы конструктор интерфейса или код? И Matthias, я не вижу .h, поэтому я могу " t скажите, является ли это подклассом UIViewControllet или подклассом UITableViewController. В любом случае, установите его в безопасном режиме. – CodaFi

Смежные вопросы