Я создал 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, у меня никогда не возникало этой проблемы. Любые предложения приветствуются.
Заранее спасибо.