UITableView不会加载NSMutableArray中的所有对象

时间:2012-10-28 15:39:32

标签: xcode uitableview nsmutablearray singleton

我有一个UITableView,我正在使用NSMutable数组中的对象填充。由于某种原因,表视图始终加载数组 - 1对象。如果[array count] == 3,它只加载2个对象(单元格)

这是我的代码。谁能告诉我为什么tableview总是跳过数组中的第一个或最后一个对象? (我不知道哪个)

- (void)viewDidLoad
{
    [super viewDidLoad];

    // singleton class containing NSMutable array
    sharedEventData = [EventData sharedDataInstance]; 

    self.navigationController.delegate = self;

    // if this returns 10 the tableview always loads 9 objects. count -1
    NSLog(@"eventList count: %u", [sharedEventData.listOfEvents count]);

    [self.tableView reloadData];

}

- (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.
    // sharedEventData.listOfEvents is my NSMutableArray
    return [sharedEventData.listOfEvents count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                                      reuseIdentifier:CellIdentifier];
    }

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    EKEvent *currentEvent = [sharedEventData.listOfEvents objectAtIndex:indexPath.row];

    NSDate *date = [currentEvent startDate];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];

    NSString *dateString = [dateFormatter stringFromDate:date];
    // Get the event at the row selected and display it's title
    cell.textLabel.text = [[sharedEventData.listOfEvents objectAtIndex:indexPath.row] title];
    cell.detailTextLabel.text = dateString;

    //NSLog(@"date string: %@", dateString);


    return cell;
}

1 个答案:

答案 0 :(得分:0)

首先在didload方法中给出一些静态数据然后检查它是否返回正确答案然后检入numberOfRowsInSection返回值是什么。我认为这是工作,你发现你的问题和didload中的一件事你删除reloadtable方法因为didload调用第一次然后表也重新加载