UITableView及其单元格在xib文件中
长话短说,我想创建一个XIB文件,其中包含:
一个看法。 在这个视图中,它有很多东西和一个tableView。 (连接的数据源,委托给文件的所有者)。 该视图是XIB文件的主要视图。
自定义单元格(用作tableView的原型单元格,因为XIB不支持原型tableView)。
我怎么能达到这两个? 另外,我想知道同样适用于UICollectionView。
我已经创建了这两个,将它加载到主视图(主视图在主要故事板中)。 但是tableView不按预期加载自定义单元格。 该单元格只是空白,看起来不像它在笔尖中设计的那样。
编辑1
以下是我如何将故事板注册到故事板中的主视图:
- (UIView *)buildViewFromViewControllerClass:(Class)viewControllerClass
{
id viewController = [[viewControllerClass alloc] initWithNibName:NSStringFromClass(viewControllerClass) bundle:nil];
[viewController view].frame = self.containerView.bounds;
[self addChildViewController:viewController];
return [viewController view];
}
我有很多viewController,所以我发现这是添加VC的最佳方式。
在上面的描述中,我只是使用常规初始化:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// init cell
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if (!cell) {
cell = [[PaymentCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CustomCell"];
}
return cell;
}
如果在视图中没有load方法,我将nib注册到tableView,它会在[tableView dequeueResuableCell...]
崩溃。 注册码:
- (void)viewDidLoad
{
[super viewDidLoad];
// [self.tableView registerNib:[UINib nibWithNibName:self.nibName bundle:nil]
// forCellReuseIdentifier:@"CustomCell"];
// I'm commenting it, because it caused crash.
}
崩溃消息:
***终止应用程序,由于未捕获异常'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:此类不是密钥值编码兼容的关键tableView'。
我在这里做错了什么? 下面是我设计笔尖的图片:
如你所见,文件所有者的mainView连接到mainView
,它包含tableView。 customCell只是一个自定义设计的单元,在相同的文件(.m文件)中定义。
你应该如下注册笔尖。
[self.tableView registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellReuseIdentifier:@"MyCell"]
我一般都看到registerClass不加载视图,但只加载类。 我不知道为什么。
另外一个.xib应该只包含一个视图。 所以你必须为UITableViewCell
和UITableView
做出不同的处理。 背后的原因很简单。 每次加载xib时,都会创建xib中的所有视图。 每次创建单元格时都不需要新的表格。 对?
至于你面临的崩溃。 该错误看起来像名称tableView
有一个插座问题。 尝试删除插座并重新初始化它们
附加
对于UICollectionView
你可以注册一个类,它会从xib载入你的视图。
[self.collectinView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:cellIdentifier]
更新
如果您正在使用故事板,则可以添加两个原型单元格,并在tableview中添加两个单元格。 你可以在那里添加所有的视图,并给他们不同的类文件。 会减少你需要维护的xib文件的数量,也不需要注册你的nib。 这可能是一个教程
链接地址: http://www.djcxy.com/p/86889.html上一篇: UITableView and its cell in a xib file
下一篇: Typescript side