Ios 从XIB加载AQGridViewCell(不工作)

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

我正在使用类,并尝试从XIB加载单元格。我将XIB设置为
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];
    }