我以编程方式创建了一个 UITableView(不使用 XIB)。它读取一个包含 NSDictionary 对象的 NSMutableArray 的 *.plist 文件。我遇到的问题是:当我在 UITableView 中显示对象时,它永远不会在第 0 行显示对象。我知道这一点,因为我得到以下 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 的输出。
当我从 NIB 填充 UITableViews 时,我从未遇到过这个问题。任何建议表示赞赏。
先感谢您。