0

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

前もって感謝します。

4

1 に答える 1

1

ちょっと馬鹿げている気がしますが、これは他の誰かに役立つかもしれません...

説明で言及しなかったのは(関連性があるとは思わなかったため)、UINavigationBarをインスタンス化して右上隅に[編集]ボタンがあるという事実でした。一言で言えば、ナビゲーションバーはテーブルの最初のレコードを覆い隠していました。

私がこれを見ることができなかった理由は私がこれをしたからです:

[self.tableView addSubview:navBar];

そして、それはnavBarをテーブルに「固定」することでした。そのため、スクロールしても欠落している行を明らかにすることはできませんでした。その行を次のように変更したとき:

[self.appDelegate.window addSubview:navBar];

最初のレコードは兄弟ビューになるため、navBarの下からドラッグできます。

見当違いの質問をお詫び申し上げます。

于 2009-06-02T00:02:08.517 に答える