1

为什么不numberOfSectionsInTableView调用该方法?如果我添加它就会被调用[self.tableView reloadData]viewDidLoad但即便如此,cellForRow它也不会被调用。

编辑:我更新了以下代码来为UITableViewCell.

在 aUIViewController中,我有:

- (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 现在推荐的基于 nib 的单元格的方式。

-(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 回答