Ios 从XIB加载AQGridViewCell(不工作)
我正在使用类,并尝试从XIB加载单元格。我将XIB设置为Ios 从XIB加载AQGridViewCell(不工作),ios,ipad,uitableview,subclass,aqgridview,Ios,Ipad,Uitableview,Subclass,Aqgridview,我正在使用类,并尝试从XIB加载单元格。我将XIB设置为UITableView的自定义单元格,但当我尝试加载单元格时,它只是空白。我想知道是否有更简单的方法来加载XIB AQGridViewCell需要从xib加载单元格 我不熟悉AQGridView,但我相信您可以利用NSBundle的Nib加载功能。其中一段摘录说明了这一想法: RootViewController.h @interface RootViewController : UITableViewController { Ap
UITableView
的自定义单元格,但当我尝试加载单元格时,它只是空白。我想知道是否有更简单的方法来加载XIB
AQGridViewCell需要从xib加载单元格
我不熟悉AQGridView,但我相信您可以利用NSBundle的Nib加载功能。其中一段摘录说明了这一想法: RootViewController.h
@interface RootViewController : UITableViewController
{
ApplicationCell *tmpCell;
}
RootViewController.m
ApplicationCell *cell = (ApplicationCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"IndividualSubviewsBasedApplicationCell" owner:self options:nil];
cell = tmpCell;
self.tmpCell = nil;
}
在IndividualSubViewsBaseApplicationCell.xib中,必须将其中UITableViewCell的出口设置为RootViewController的tmpCell属性。然后,作为调用NSBundle的loadNibNamed方法的一个副作用,通过Nib加载机制在RootViewController上设置tmpCell属性。您可以做的是在子类本身中进行xib(uiview)解包/加载(它与uitableviewcell具有不同的init方法) 您还可以将任何插座连接到此xib,并将其整个视图添加为子视图,或者替换contentview)
为了使它更快,您可以使用这个xib的uinib并重用它来保存磁盘i/o。据我所知,它显示为空白,因为显示的是单元格的
内容视图。最后,我从IB加载了我的自定义视图,并在请求单元格时将其添加为单元格的contentView
的子视图
AQGridView的开发人员曾在GitHub上声称,将来将添加适当的IB支持,但该帖子的日期是2010年8月,所以不要屏息以待。这篇文章描述了如何从nib加载AQGridViewCell,并提供了示例代码。查看名为“可重用AQGridViewCell”的部分
(感谢pt2ph8指出contentView
)这花了我一段时间,但我想出了一个与jlstrecker提到的博客帖子不同的方法
创建AQGridViewCell
的子类-让我们调用它
MyGridViewCell
李>
为该单元创建一个nib,将其连接到IB中
在IB中的单元格视图顶部发布视图。没错,视图
在一个视图的顶部。使尺寸完全相同
对于这一观点
在视图顶部(我们称之为view2
),设置标记
属性(可以
在IB)到1中完成
把你想连接的所有东西都放在上面
view2
,随心所欲地装饰您的手机
在AQGridViewController
的子类中使用以下代码(当然,根据需要更改):
`
享受吧 通常使用IB构建计算单元,然后在AQGridViewCell的子类中添加
- (void)awakeFromNib{
self.contentView.backgroundColor = [UIColor clearColor];
}
这就是我创建“自定义单元格”的方式。但是,实际加载时单元格为空。我现在不明白为什么。看起来好像是在用捆绑加载机制加载单元后对其进行初始化。尝试取出gridCell=[[gridViewCell alloc]initWithFrame:…行。此外,请确保在加载的gridCell上设置reuseIdentifier,否则每次需要单元格时都会受到惩罚。我已删除了gridCell=[[gridViewCell alloc]initWithFrame..
但当运行时,它们不会相互作用,并且有点混乱。我唯一能建议的是,确保gridCell填充的实际对象是AQGridViewCell的实际实例或其子类。在Xib文件中,您将有一个表示该单元格的对象,并且必须请说明该单元格对象的实现类是AQGridViewCell的一种类型。这是我在不了解控制器类的情况下可以提供的唯一其他建议。我很难理解为什么会这样。在ReusableGridViewCellExampleViewController.h中有一个出口“gridViewCellContent”,但它似乎没有连接(并且没有任何可用的连接…),但它工作正常。您能为我指出正确的方向来解释为什么它会工作吗?
- (AQGridViewCell *)gridView:(AQGridView *)aGridView cellForItemAtIndex:(NSUInteger)index {
static NSString *CellIdentifier = @"MyGridViewCell";
MyGridViewCell *cell = (MyGridViewCell *)[self.gridView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = (ZZProductGridViewCell *)[[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil] objectAtIndex:0];
}
[cell.contentView addSubview:[cell viewWithTag:1]]; //THIS IS THE IMPORTANT PART
return cell;
}
- (void)awakeFromNib{
self.contentView.backgroundColor = [UIColor clearColor];
}