0

私は次のxibで次のコードを持っています:

@property (nonatomic, retain) IBOutlet UITableViewCell *cellLoadMore;

ここに画像の説明を入力してください

cellLoadMoreをNSLogしようとすると、nullが返されますが、ビューをNSLogしようとすると、値があります。cellLoadMoreがnullを返す問題は何でしょうか?

以下は私のコードです:

- (void)viewDidLoad{
  [super viewDidLoad];

  NSLog(@"cell load more %@", cellLoadMore_);
  NSLog(@"view %@", self.view);
}

コンソールプリント:

cell load more (null)
view <UITableView: 0x1284200; frame = (0 20; 320 460); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xa393b0>; contentOffset: {0, 0}>

注:私のクラスはUITableViewのサブクラスです。

4

3 に答える 3

1

これが起こっていることだと思います。プロパティとインスタンス変数を作成していますが、プロパティを正しく合成していません。Xcode 4.4+ のデフォルトでは、プロパティは に合成され、 には合成さ_cellLoadMoreれませんcellLoadMore_。古いバージョンでは、単純@synthesize cellLoadMoreに使用すると、変数はcellLoadMore. 基本的に、 という行がない場合は@synthesize cellLoadMore = cellLoadMore_、2 つの異なる変数があります。

于 2012-11-22T09:30:59.820 に答える
0

私はこの問題に何度か直面し、コントローラーを UITableViewController のサブクラスから UITableview デリゲートを使用する UIViewController に変更することで解決できました。これはかなり面倒ですが。

于 2012-12-19T01:54:57.070 に答える
0

おそらく、セルがロードされる前に「ログを記録」しています。セルは、実際に初めて使用されたときにロードされます (「遅延ロード」はグーグルで検索してください)。セルのビューにアクセスすると、実際に使用されているため、実際に読み込まれます。その後、ビューとセルをログに記録できますが、null になることはありません。

于 2012-11-22T08:31:34.320 に答える