1

動作しているように見えるテーブル ビューがありますが、期待どおりにセルにテキストが表示されません。つまり、tableView をロードすると、空白のセルのみが表示されますが、1 つのセルには、以下のコードで要求されたテキストが表示されると予想されます。

以下の私のコードに何か問題がありますか?

注: tableView はスタンフォードの のサブクラスであるため、 cellForRowAtIndexPath のみを実装していますCoreDataTableViewController

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"a_cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
        if (cell == nil) {
        NSLog(@"cell is nil");
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }

    //Page is a managed object entity with a name attribute.
    Page *page = [self.fetchedResultsController objectAtIndexPath:indexPath];
    //The log below returns the expected string for the name value.
    NSLog(@"page.name %@", page.name);
    cell.textLabel.text = @"page.name";

    return cell;
}

現在のところ、オブジェクトまたは「ページ」は 1 つしかないため、tableView (上部) の 1 つのセルだけがテキストを表示すると予想されます。実際にはすべて空白で食べました。

次を使用してindexPathをログに記録すると:

NSLog(@"cellForRowAtIndexPath indexPath %@", indexPath); 

次のものが一度印刷されます。

cellForRowAtIndexPath indexPath <NSIndexPath 0x836f1d0> 2 indexes [0, 0]

最初のセルですか?

不思議なことに、セルの下のようにセルに色を付けようとすると、セルも白のままです:

cell.backgroundColor = [UIColor redColor];

以下は、tableViewController のヘッダーです (私のもので、スタンフォードのものではありません)。context プロパティに注意してください。つまり、必要なフェッチを実行するために coreData managedObjectContext を渡すことができます。

#import <UIKit/UIKit.h>
#import "CoreDataTableViewController.h"

@interface CDST02TableViewController : CoreDataTableViewController


@property (strong, nonatomic) NSManagedObjectContext *context;


@end
4

1 に答える 1

2

変更する必要があります:

cell.textLabel.text = @"page.name";

に:

cell.textLabel.text = page.name;

それでもうまくいかない場合は、インターフェイス要素が最初の行を隠しているかどうかを確認してください;)

于 2013-06-25T09:55:28.297 に答える