我将tableView作为UIViewController的子视图,在故事板中,我将原型单元格添加到此场景中。但似乎故事板中的单元格设计不起作用,似乎原型单元只适用于UITableViewController?
这是我的故事板设计,我使用tableView作为ViewController的子视图,并在其中添加两个原型单元格(粉红色和蓝色单元格)
这是我的tableView代码:
@implementation SubViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"TableViewCell"];
[self.tableView registerClass:[ATableViewCell class] forCellReuseIdentifier:@"ATableViewCell"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 2;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0)
{
TableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];
return cell;
}
else
{
ATableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"ATableViewCell" forIndexPath:indexPath];
return cell;
}
}
当我运行我的代码时,我希望会有一个蓝色和粉红色的单元格,但事实上,tableView只会有两个空白单元格(看起来故事板中的设计不起作用)
答案 0 :(得分:1)
如果您使用故事板进行设计,则不需要以下行
[self.tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"TableViewCell"];
[self.tableView registerClass:[ATableViewCell class] forCellReuseIdentifier:@"ATableViewCell"];
而不是你需要在故事板中设置单元格的标识符,如下图所示
答案 1 :(得分:0)
您想检查一些内容以确保您的表格视图已连线,并且知道在SubViewController
类中查找单元格。
self.tableView
不会自动连接。 SubViewController
类作为其数据源和委托。您可以在代码中执行此操作,也可以在界面构建器中拖动。尝试将此添加到您的viewDidLoad
方法:self.tableView.dataSource = self;
cellForRowAtIndexPath:
中,使用该标识符将您的单元格出列,代替按类名注册。 另外,您也可以将原型单元格与UICollectionView一起使用,但API和故事板设置非常相似,并且适用相同的步骤。