プログラムで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 を作成したとき、この問題は経験したことがありませんでした。任意の提案をいただければ幸いです。
前もって感謝します。