Val*_*adu 6 cocoa-touch interface-builder ios
我最近看到一些用于instantiateWithOwner以UITableView这种方式加载单元格的代码示例:
cell = [nib instantiateWithOwner:self options:nil][0];
虽然它比将属性出口作为原型单元更清晰,更紧凑,但我想知道它是否有保证(也就是文档化)接口构建器中的第一个顶级对象将始终是返回的数组中的第一个instantiateWithOwner.此时可能就是这种情况,但如果没有记录(未定义),它可能会在将来发生变化,从而导致具有多个顶级对象的nib会出现问题并实例化此类单元格.
我找不到任何地方记录instantiateWithOwner具体返回的数组的顺序,但文档确实讨论了nib 加载代码调用 awakeFromNib 的顺序:
awakeFromNib不保证nib 加载代码调用对象方法的顺序。
我的假设是,这意味着返回的数组的顺序instantiateWithOwner也无法保证。为了保证从 xib 中拉出多个对象时的顺序,我通常首先通过界面生成器使用唯一(升序)编号配置每个对象的标签。然后,您的代码将如下所示:
NSArray *cells = [[nib instantiateWithOwner:self options:nil] sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]]];
cell = cells[0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |