Всегда отсутствует одна строка в UITableView - PullRequest
0 голосов
/ 01 июня 2009

Я создал UITableView программно (не используя XIB). Он читает файл * .plist, содержащий NSMutableArray объектов NSDictionary. Проблема, с которой я сталкиваюсь, заключается в следующем: когда я отображаю объекты в UITableView, он никогда не показывает объект в нулевой строке. Я знаю это, потому что я получаю следующий вывод NSLog:

2009-06-01 10:02:34.566 Color[784:20b] array count = 4
2009-06-01 10:02:34.570 Color[784:20b] row = 3: Air
2009-06-01 10:02:34.570 Color[784:20b] row = 2: Earth
2009-06-01 10:02:34.571 Color[784:20b] row = 1: Water
2009-06-01 10:02:34.571 Color[784:20b] row = 0: Fire

В этом случае я увижу таблицу с водой, землей и воздухом (но без огня). Если я добавлю другой объект, то появится Fire, но новый объект не появится. Следовательно, всегда объект в строке 0.

Вот соответствующий код:

@interface LoadViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
    NSMutableArray *loadedObjects;
}

- (void)viewWillAppear:(BOOL)animated {
    self.loadedObjects = [self getCurrentData];
    NSLog(@"array count = %d", [self.loadedObjects count]); 
    [self.tableView reloadData];
    [super viewWillAppear:animated];
}

-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.loadedColors count];
}

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    static NSString *Identifier = @"Identifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];
    if(cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:Identifier] autorelease];
        cell.showsReorderControl = YES;
    }
    NSUInteger row = [indexPath row];
    NSDictionary *obj = [self.loadedObjects objectAtIndex:row];
    cell.text = [obj objectForKey:@"Name"];
    NSLog(@"row = %d: %@", row, [obj objectForKey:@"Name"]);
    return cell;
}

В фрагментах кода вы также можете увидеть мой вывод в NSLog.

Когда я заполнял UITableViews из NIB, у меня никогда не возникало этой проблемы. Любые предложения приветствуются.

Заранее спасибо.

1 Ответ

1 голос
/ 02 июня 2009

Я чувствую себя немного глупо, но, может быть, это могло бы пригодиться кому-то еще ...

Что я не упомянул в своем описании (потому что я не думал, что оно актуально), так это тот факт, что я также создал экземпляр UINavigationBar с кнопкой «Редактировать» в правом верхнем углу. В двух словах, навигационная панель скрывала первую запись в таблице.

Причина, по которой я не мог этого увидеть, заключается в том, что я сделал это:

[self.tableView addSubview:navBar];

и он просто «приклеил» navBar к столу, чтобы при прокрутке не было обнаружено отсутствующей строки. Когда я изменил эту строку на:

[self.appDelegate.window addSubview:navBar];

Я мог бы перетащить первую запись из-под navBar, потому что тогда они становятся братскими представлениями.

Прошу прощения за неуместный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...