为什么没有调用numberOfSectionsInTableView
方法?如果我在[self.tableView reloadData]
中添加viewDidLoad
,则会调用它,但即便如此,cellForRow
也不会被调用。
修改:我更新了以下代码,以便为UITableViewCell
注册nib。
在UIViewController
中,我有:
- (void)viewDidLoad
{
[super viewDidLoad];
XXFeedTableViewController *tableViewController = [[XXFeedTableViewController alloc] initWithStyle:UITableViewStylePlain];
tableViewController.view.frame = self.view.bounds;
[self addChildViewController:tableViewController];
}
@interface XXFeedTableViewController : UITableViewController
@end
#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
Apple文档说:
如果未指定nib文件或nib文件未定义数据源 或委托,UITableViewController设置数据源和 表视图的委托给自己。当表视图即将到来时 在第一次加载时出现,表视图控制器重新加载 表格视图的数据。
答案 0 :(得分: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];