1

numberOfSectionsInTableViewメソッドが呼び出されないのはなぜですか? を追加すると呼び出さ[self.tableView reloadData]れますviewDidLoadが、それでもcellForRow呼び出されません。

編集:次のコードを更新して、ペン先を登録しましたUITableViewCell

UIViewController、私は持っています:

- (void)viewDidLoad
{
    [super viewDidLoad];        
    XXFeedTableViewController *tableViewController = [[XXFeedTableViewController alloc] initWithStyle:UITableViewStylePlain];
   tableViewController.view.frame = self.view.bounds;
   [self addChildViewController:tableViewController];
}

XXFeedTableViewController.h

@interface XXFeedTableViewController : UITableViewController
@end

XXFeedTableViewController.m

#import "XXFeedTableViewController.h"
#import "XXFeedTableViewCell.h"

@interface XXFeedTableViewController ()

@end

@implementation XXFeedTableViewController

- (id)initWithStyle:(UITableViewStyle)style {
    self = [super initWithStyle:style];
    if (self) {
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerNib:[UINib nibWithNibName:@"XXFeedTableViewCell" bundle:nil] forCellReuseIdentifier:@"XXFeedTableViewCell"];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 5;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"XXFeedTableViewCell";
    XXFeedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.textLabel.text = @"Hey";
    return cell;
}

@end

アップルのドキュメントは次のように述べています。

nib ファイルが指定されていない場合、または nib ファイルがデータ ソースまたはデリゲートを定義していない場合、UITableViewController はデータ ソースとテーブル ビューのデリゲートを self に設定します。テーブル ビューが最初にロードされて表示される直前に、テーブル ビュー コントローラーがテーブル ビューのデータをリロードします。

4

1 に答える 1

1

これを試して、動作するかどうかを確認してください。これは、ペン先ベースのセルで現在 Apple が推奨している方法です。

-(void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerNib:[UINib nibWithNibName:@"XXFeedTableViewCell" bundle:nil] forCellReuseIdentifier:@"XXFeedTableViewCell"];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 5;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"XXFeedTableViewCell";
    ROFeedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.textLabel.text = @"Hey";
    return cell;
}

編集後:

最初のコントローラーでは、サブビューを追加する前に、テーブル ビュー コントローラーを子コントローラーとして追加する必要があります。

   XXFeedTableViewController *tableViewController = [[XXFeedTableViewController alloc] initWithStyle:UITableViewStylePlain];
   self addChildViewController:tableViewController];
   tableViewController.view.frame = self.view.bounds; 
   [self.view addSubview:tableViewController.view]; 
   [tableViewController didMoveToParentViewController:self];
于 2013-07-17T04:26:53.237 に答える