Fog*_*ter 42 iphone uitableview
我在WWDC视频中看到过这个,但只是非常简短.他们没有介绍如何创建实际的xib文件.
我有一个名为MyCustomCell的UITableViewCell子类.在这里我有几个属性UILabels,UIImageViews等...都设置为IBOutlets.
现在,在我的xib文件中......
我将什么设置为文件的所有者?我在哪里引用我的MyCustomCell类是文件的所有者?
一旦我设置了文件的所有者,我如何将其与xib的根视图链接?
我尝试了一些设置,但在使用时我一直都会遇到错误.
哦,我用来注册它的代码是......
self.cellNib = [UINib nibWithNibName:@"MyCustomCell" bundle:nil];
[self.tableView registerNib:self.cellNib forCellReuseIdentifier:@"CustomCell"];
Run Code Online (Sandbox Code Playgroud)
谢谢
Ali*_*are 47
通常情况下,你不必理会文件在这种情况下,业主,因为当tableView实例从提供/相关的细胞UINib与一起reuseIdentifier.它会加载所有的笔尖的顶级对象,并且只使用第一个顶级对象是类的UITableViewCell(或者只是第一个顶级对象,无论类的?但一般而言,您只需要您UITableViewCell在无论如何你的XIB - 不计算File's Owner和First Responder只是"代理").
实际上,tableView将尝试将单元格出列,如果找不到可重用的单元格,它将使用UINib您提供的单元格创建一个新单元格.它将类似于此:
NSArray* topLevelObjects = [self.cellNib instantiateWithOwner:nil options:0];
cell = [topLevelObjects objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
(这当然是一个简化版本只是为了表明这个想法,我不知道它是否真的称之为这些确切的行,但它应该非常接近)
因此,在File's Owner不使用在这种特殊情况下,你只需要把一个简单的自定义UITableViewCell作为唯一的XIB文件的顶级对象旁边现有File's OwnerANF First Responder(即,再一次,只是"代理" /"外部对象引用"并且不会被实例化,也不会成为返回的顶级对象的一部分" instantiateWithOwner:options:.
如果它仍然不起作用:
reuseIdentifier您的UITableViewCell在IB(在Object Inspector面板右侧,一旦你选择了你的IB细胞),并使用完全相同的值,这个reuseIdentifier属性在IB您在代码中使用一个.Nut*_*tch 11
我发现问题中给出的代码很好,但如果您使用的是故事板,则无法self.tableView在init方法中引用.在另一个问题上有一些关于它的讨论.
所以第一行是init:
self.cellNib = [UINib nibWithNibName:@"MyCustomCell" bundle:nil];
但这条线应该是viewDidLoad或类似的:
[self.tableView registerNib:self.cellNib forCellReuseIdentifier:@"CustomCell"];
这解决了我的神秘错误,例如 "*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle <Foo.app> (loaded)' with name 'Ogf-Sj-1ej-view-bBf-Ti-Dda''"
而且,是的,我正在做一些非常类似于从Storyboard中挖掘出来的东西,并将它们放在xib中以便在视图控制器中重复使用!
| 归档时间: |
|
| 查看次数: |
54000 次 |
| 最近记录: |