動作しているように見えるテーブル ビューがありますが、期待どおりにセルにテキストが表示されません。つまり、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