私は を持ってUITableView
おり、カスタム が含まれていますUITableViewCell
。テストするために、3 つの文字列を含む配列があります。UITableView
デリゲート メソッドは期待どおりに呼び出されますが、tableView :cellForRowAtIndexPathデリゲートには常にNSIndexPath
、row プロパティが always であるインスタンスが渡され== nil
ます。
tableView:cellForRowAtIndexPath
3回呼び出されます(配列内のオブジェクトごとに1回)。tableView
デザイナー (絵コンテ) 内に fromを追加し、そのアウトレットを作成しました。UITableViewCell インスタンスは、このデリゲートを呼び出すたびに正しくインスタンス化されているように見えます。[indexPath row]
値が常に である理由に頭を悩ませることはできませんnil
。
インターフェース:
実装ファイル内:
@interface FirstViewController ()
@property(nonatomic, strong)AppDelegate *sharedDelegate;
@property(nonatomic, strong)NSArray *userList;
@end
ヘッダー内:
@interface FirstViewController : UITableViewController <FacebookDelegate>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
カスタム セルを初期化します。
-(void)viewDidLoad
{
[self.tableView registerClass: [ListCategoryCell class]forCellReuseIdentifier:@"ListCategoryCell"];
self.userList = @[@"d", @"g", @"f"]; // make some test data
}
そして、これは私を怒らせている代表:
//NSIndexPath.row is nil ?!
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"ListCategoryCell";
ListCategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = (ListCategoryCell *)[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
}
cell.titleLabel.text = [self.userList objectAtIndex:[indexPath row]];
cell.detailLabel.text = @"Detail";
return cell;
}
何か不足していますか?ありがとう!
現在作業中
私の問題に非常に関連していると思われるいくつかのコンテキストを省略しました(そして、持つべきではありません)。最初に UIViewController を作成し、これに UITableView をビューとして追加しました。UITableView でカスタム プロトタイプ セルを作成しました。私はすべての家事をしました:
UIViewController
UITableViewDelegate
&を実装しましたUITableViewDatasource
。のアウトレットを作成しましたUITableView
。すべてのコンセントを接続しました
プロパティindextPath.row
が常にnil
. 私が見つけたいくつかのリソースは、uitableview デリゲートが呼び出される前にカスタム セルが表示されないことを示唆していました。
最後に、クラスを のサブクラスにしUITableViewController
ました。物事はうまくいき始めました。なぜ私の最初の試みが失敗したのか、私はまだ興味があります。
みんなの時間をありがとう。いくつかのすばらしいコメントは、「知っておくとよい」いくつかのトピックを調査するのに役立ちました。