2013-08-06 2 views
0

У меня проблема с моим Master View controller, не указанным в моей раскадровке.Мастер-вид не отображается, как указано в раскадровке

При поиске на этом (удивительном) сайте я научился проверять свои методы numberOfSectionsInTableView и tableView:numberOfRowsInSection:. Я считаю, что моя проблема заключается в том, что tableView:numberOfRowsInSection: возвращает 'int 0'.

Любая помощь будет высоко оценена.

Мои MasterViewController.m:

#import "ParentMasterViewController.h" 
#import "ParentDetailViewController.h" 
#import "NewEventDataController.h" 
#import "NewEvent.h" 

@interface ParentMasterViewController() 
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath; 
@end 

@implementation ParentMasterViewController 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 

    self.dataController = [[NewEventDataController alloc] init]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

#pragma mark - Table View 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [[self.fetchedResultsController sections] count]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.dataController countOfList]; 

} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"Cell"; 

    static NSDateFormatter *formatter = nil; 

    if (formatter == nil) 
    { 
     formatter = [[NSDateFormatter alloc] init]; 

     [formatter setDateStyle:NSDateFormatterShortStyle]; 
    } 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // forIndexPath:indexPath]; 

    // note: Add some code like this to create a new cell if there are none to reuse 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    NewEvent *eventAtIndex = [self.dataController objectInListAtIndex:indexPath.row]; 

    [[cell textLabel] setText:eventAtIndex.event]; 

    [[cell detailTextLabel] setText:[formatter stringFromDate:(NSDate *)eventAtIndex.date]]; 

    return cell; 
} 

Кроме того, мой NewEventDataController.m:

#import "NewEventDataController.h" 
#import "NewEvent.h" 

@interface NewEventDataController() 

- (void)initializeDefaultDataList; 

@end 

@implementation NewEventDataController 

- (void)initializeDefaultDataList 
{ 
    NSMutableArray *eventList = [[NSMutableArray alloc] init]; 

    self.masterNewEventList = eventList; 

    NewEvent *event; 

    NSDate *today = [NSDate date]; 

    event = [[NewEvent alloc] initWithName:@"Event" date:today]; 

    [self addNewEventWithEvent:event]; 
} 

- (void)setMasterNewEventList:(NSMutableArray *)newList 
{ 
    if (_masterNewEventList != newList) 
     _masterNewEventList = [newList mutableCopy]; 
} 

- (id)init 
{ 
    if (self = [super init]) 
    { 
     [self initializeDefaultDataList]; 

     return self; 
    } 

    return nil; 
} 

- (NSUInteger)countOfList 
{ 
    return [self.masterNewEventList count]; 
} 

- (NewEvent *)objectInListAtIndex:(NSUInteger)theIndex 
{ 
    return [self.masterNewEventList objectAtIndex:theIndex]; 
} 

- (void)addNewEventWithEvent:(NewEvent *)event 
{ 
    [self.masterNewEventList addObject:event]; 
} 

@end 

Заранее спасибо за взглянуть.

+0

Попробуйте положить точку останова на self.dataController = [[NewEventDataController Alloc] инициализации]; и посмотреть, вызвана ли она. –

+0

Спасибо за ответ. Оно делает. Сразу после ответа отладка показывает '_dataController = NewEventDataController (NewEventDataController *) 0x07470a00' –

ответ

1

См: Table View Programming Guide

Если я не интерпретируя неправильно, чем вы скопировали этот код где-то и забыл изменить реализацию этого метода. Измените его, чтобы иметь один раздел для каждой строки или закомментировать весь метод:

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

Да, я действительно зеленый с Objective-C и XCode в целом. Поэтому я пытаюсь изменить приложение Apple Birdsighting от «Your Second IOS App», чтобы попытаться понять, как все это работает. Спасибо за помощь, я посмотрю. –

+0

Удовольствие. Я предлагаю вам начать читать руководства Apple и документацию. –

+0

Они предлагают, чтобы я возвращался назад и вперед, но я это сделаю. Я прокомментировал строку, я добавил 'return [self.dataController countOfList];', добавил строку 'return 1;', и он делает то же самое. Я изменил его на 'return 2;', который просто добавил еще одну из указанных ячеек, не относящихся к расписанию. Что было хорошо в каком-то смысле, по крайней мере, я точно знаю, что это делает. –

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