我正在尝试使用自定义UITableViewCell创建项目。自定义单元格永远不会加载,它们只是空白。在项目的这一点,我要做的是将UITableViewCell放在.xib中,按照我想要的方式设计它,并指定其重用标识符以及组件的标记ID,以便我可以在以后的代码中使用它们。
我已经谷歌搜索了一下,发现了几个看起来像我想做的教程,以及许多有问题答案的SO问题。在这一点上,它可能只是我的脑袋旋转太多不同的角度和解决方案。
这是我目前尝试使用我的UITableView注册自定义单元格的尝试,但在设备上运行时,表格视图中的行完全为空白。
UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"MyCell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"];
}
UILabel* l1 = (UILabel*)[cell viewWithTag:1];
UILabel* l2 = (UILabel*)[cell viewWithTag:2];
UILabel* l3 = (UILabel*)[cell viewWithTag:3];
l1.text = @"Foobar";
l2.text = @"Foobar";
l3.text = @"Foobar";
我很确定我已经正确地连接了所有属性,但在这个阶段我需要一双新鲜的眼睛为我指出facepalm。
有趣的文件是FilmerView.m / h / xib,单元格在FilmerViewCell.xib中。运行应用程序时,此TableView位于选项卡栏控制器的第二个选项卡中。
项目:
答案 0 :(得分:1)
我无法提供完整的答案,但请查看tableview方法。 registerNib:forCellReuseIdentifier:
此外,请停止使用该出列方法。使用包含indexPath的那个。
然后你不必检查细胞之后是否为零。
修改强>
在viewDidLoad
(或类似的地方)......
UINib *cellNib = [UINib nibWithNibName:@"MyCustomCellXibFileName" bundle:[NSBundle mainBundle]];
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"CellIdentifier"];
现在在表视图中使用数据源方法......
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier" forIndexPath:indexPath];
// no need to check cell == nil.
// this method is guaranteed to return a non nil cell.
// if it doesn't then the program will crash telling you that you need to...
// register a class or nib (but we just did this in viewDidLoad) :D
// configure your cell here...
[self configureMyCell:(MyCustomCell *)cell atIndexPath:indexPath];
return cell;
}
- (void)configureMyCell:(MyCustomCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
cell.nameLabel.text = @"Hello, world";
}
希望这有帮助。
答案 1 :(得分:0)
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
方法,并返回正值(> 0)。答案 2 :(得分:-1)
评估以下内容: