1

NSMutable 配列のオブジェクトを取り込んでいる UITableView があります。何らかの理由で、テーブル ビューは常に配列 - 1 オブジェクトをロードします。[配列数] == 3 の場合、2 つのオブジェクト (セル) のみが読み込まれます。

これが私のコードです。テーブルビューが常に配列の最初または最後のオブジェクトをスキップする理由を誰か教えてもらえますか? (どちらかはわかりません)

- (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;
}
4

1 に答える 1

0

まず、didload メソッドの配列にいくつかの静的データを指定し、それが正しい答えを返すかどうかを確認してから、numberOfRowsInSection で戻り値を確認します。私はこれがうまくいっていると思います。あなたはあなたの問題を見つけます.didloadの1つのことは、didloadが最初に呼び出してからテーブルもリロードするため、reloadtableメソッドを削除します

于 2012-12-11T06:08:46.483 に答える