M. *_*yan 12 iphone uitableview ios ios5
好的.我做了比我过去三年可能计算的更多自定义UITableViewCells.
然后是iOS 5,我刚在我的桌面上有一个项目,我还需要做更多的事情.
所以我以前的方式是做一个自定义的XIB,将UITableViewCell拖到画布上,插入我的控件,设置自定义类,做我的链接...然后通过循环遍历代码加载实例化代码中的单元格解压缩XIB后的对象.
这么多次我有一个类别功能来处理整个事情.
现在,在iOS 5中,每次我制作自定义单元格时,它都会提供大的空白表格单元格.
以下是插入表中的自定义单元格的以下特征
1)除了"默认"UITableViewCell控件(textLabel等,将在我设置文本时填充和显示)时显示完全鲜明的白色.
2)isKindOfClass(MyCustomCellClass)报告为真
3)自定义单元类的Setter方法正在运行,设置值的对象指针和自定义UILabel等都报告为非零,这意味着单元格实际上正在制作并正确地从XIB实例化
4)出于某种原因无条件地显示像UIStepper这样的非同寻常的控件.所以,是的,如果我在自定义单元格中放置一个步进器,它会显示,但标签和图像不会.
我可以想象,默认情况下某些东西会遮挡内容视图,否则我正在创建的自定义控件不再适用于单元格的contentView(就像以前一样),而只是被抛入外太空.
例如,在iOS 4 XIB中,我曾经在制作自定义单元格时看到这一点(从Apple的iOS 5文档中拉出):

但是到目前为止,这是我在iOS 5 XIB中做同样的事情

请注意,它没有明确显示内容视图的小虚线.
我对这个问题的所有诊断知识都已经筋疲力尽了.我尝试在运行时手动将所有自定义标签直接泵入内容视图,但即使这样也行不通.
我正在寻找任何想法.
编辑
加载XIB的代码
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"XCCodeViewCell" owner:self options:nil];
cell = codeCell;
self.codeCell = nil;
}
Run Code Online (Sandbox Code Playgroud)
这是目前基于Apple的新推出的iOS 5推荐简化它之后的情况.XIB的所有者正确地设置为"self"类,并且codeCell正确地链接到单元格,具有正确的类和标识符.
jac*_*ash 24
哇,这个花了我一段时间来测试,但我想我已经找到了你的答案......
使用界面构建器中的Xcode4,他们添加了在界面构建器中静态设置tableViewCells的功能.当您想要设计不会更改的tableView并且您不想在代码中编写它们时,这很酷.为了方便这一点,他们设置了在IB中设置tableViewCell样式的功能,并查看它的外观.当您使用自己的子视图设计自己的单元格时,请选择"自定义".
随着iOS 5的发展,我发现了以下内容:当我从xib加载一个单元格,然后以编程方式设置textLabel.text或其中一个标准单元格样式的其他属性时,tableViewCell似乎生成该标准视图,其中包含默认标签,并用它覆盖您的自定义视图.因此,为了保留您的自定义单元子视图,您不需要访问任何标准tableCell的属性.
凉.
iOS 4中也是新的UINib.您应该使用UINib从xibs加载tableViewCells,因为它具有缓存并且速度更快(对于您的tableView滚动更好).ARC代码如下所示:
标题:
@property (nonatomic, strong) UINib * tableCellLoader;
Run Code Online (Sandbox Code Playgroud)
.m文件:
-(void)viewDidLoad{
[super viewDidLoad];
self.tableCellLoader = [UINib nibWithNibName:@"MyTableViewCell" bundle:nil];
}
Run Code Online (Sandbox Code Playgroud)
然后在tableView:cellForRowAtIndexPath中:
...
if (cell == nil) {
cell = [[self.tableCellLoader instantiateWithOwner:self options:nil] objectAtIndex:0];
}
...
Run Code Online (Sandbox Code Playgroud)
编辑:更新iOS 5中的新功能iOS 5中的新功能是UITableView为某些单元重用标识符保留xib,然后在重用队列中没有任何实例化该特定类型的新单元.
查看
– registerNib:forCellReuseIdentifier:
Run Code Online (Sandbox Code Playgroud)
然后当你这样做
– dequeueReusableCellWithIdentifier:
Run Code Online (Sandbox Code Playgroud)
你可以保证得到一个UITableViewCell指定的类型.它可以帮助您自己完成整件事UINib.
| 归档时间: |
|
| 查看次数: |
9146 次 |
| 最近记录: |