我的 XIB 中的两个 UITableViewCells for iPad/iPhone
Posted
技术标签:
【中文标题】我的 XIB 中的两个 UITableViewCells for iPad/iPhone【英文标题】:Two UITableViewCells in my XIB for iPad/iPhone 【发布时间】:2013-04-15 16:06:32 【问题描述】:我正在尝试使用两种不同格式的 UITableViewCells,具体取决于它是 iPad 还是 iPhone。两个单元格显示相同的信息,但 iPad 单元格的高度是一半,宽度是两倍。所以信息显示在一行而不是两行。
在我的cellforRowatIndexPath
,
我正在输入代码:
HistoryCell *cell;
if (self.isiPad)
cell = [self.tableView dequeueReusableCellWithIdentifier:@"historyiPadCellType" forIndexPath:indexPath];
else
cell = [self.tableView dequeueReusableCellWithIdentifier:@"historyCellType" forIndexPath:indexPath];
但是,如果我在同一个 XIB 中有 2 个 UItableViewCell,它似乎会给我一个错误:
invalid nib registered for identifier (historyCellType) - nib must contain exactly one top level object which must be a UITableViewCell instance'
有没有办法解决这个问题?
谢谢!
【问题讨论】:
我更喜欢自定义 UITableViewCell 并处理 ipad 和 iphone 信息。 AT cellForRowAtIndexPath at uitableView 处理单元格宽度和高度.. @GeorgeHanna 是的,但问题是我需要将最初位于第二行的所有对象转移到第一行。如果我只是创建另一个单元格并使用 AutoLayout 进行所有设置,这似乎更容易 【参考方案1】:为 iPad 和 iPhone 使用不同单元的最佳方法是使用 2 个笔尖: HistoryCell~iphone.xib 和 HistoryCell~ipad.xib
你必须注册你的笔尖:
[self.tableView registerNib:[UINib nibWithNibName:@"HistoryCell" bundle:nil] forCellReuseIdentifier:@"historyCellType"];
系统根据当前设备自动加载xib。
【讨论】:
太棒了。我不知道这个巧妙的技巧。无论如何我可以强制它在 iPad 模拟器中默认为 iPad 版本吗?它似乎一直默认为 iPhone 版本。谢谢你,亚历山大! 欢迎您! iPad模拟器默认会加载HistoryCell~ipad.xib,如果你想加载特定的nib你应该指定文件名。以上是关于我的 XIB 中的两个 UITableViewCells for iPad/iPhone的主要内容,如果未能解决你的问题,请参考以下文章
如何从 XIB 文件访问 ViewController 中的 IBoutlet