2011-12-21 31 views
2

可以说我有以下xibs:文件的所有者混乱的iOS

  • IssueSelectorViewController
    • 文件的所有者:IssueSelectorViewController
  • IssueCell - 文件的所有者 - IssueSelectorViewController
    • 文件的所有者:IssueSelectorViewController

在IssueSelectorViewController.h文件我有以下几点:

@interface IssueSelectorViewController : UIViewController <AQGridViewDelegate, AQGridViewDataSource, ReaderViewControllerDelegate,UIScrollViewDelegate, IconDownloaderDelegate> 
@property (nonatomic, strong) IBOutlet AQGridView * gridView; 
@property (nonatomic, strong) IBOutlet IssueCell *gridViewCellContent; 
... 
@end 

里面IssueSelectorViewController.xib,我从做GridView的出口连接 - >实际网格视图。这对我来说很有意义,因为我在这个对象中有一个网格视图,并且想连接到它,所以我可以从代码访问它。

Inside IssueCell.xib当点击文件的所有者,我有一个插座gridViewCellContent,我连接到IssueCell对象。这个工作,并允许我的程序运行,但这是真的在做什么?在IssueSelectorviewController我需要访问IssueCell来找出每个单元格的宽度和高度。我看到这是在一个例子中完成的,但我完全不理解它。

编辑:

这里就是我用self.gridViewCellContent,如何工作的呢?它指向哪个IssueCell?

- (CGSize)portraitGridCellSizeForGridView:(AQGridView *)aGridView 
{ 
    [[NSBundle mainBundle] loadNibNamed:@"IssueCell" owner:self options:nil]; 
    return self.gridViewCellContent.frame.size; 
} 

回答

9

笔尖中的“文件所有者”是代理或占位符。当笔尖实际加载时,与此占位符的任何连接都将转换为实际拥有笔尖的实际对象。所以当你做[UIViewController initWithNibName:bundle:]时,文件的所有者占位符被实际的视图控制器对象所取代。

加载自定义表格视图单元格(我假设你在tableView:cellForRowAtIndexPath:方法中执行该操作)时,它非常相似。您加载笔尖,指定所有者,并且该所有者对象获取“文件的所有者”占位符在笔尖自身中具有的所有连接。

我希望有道理吗?

如果你发布你的tableView:cellForRowAtIndexPath:,你可以看到连接的地方。 (或者,如果你注册了一个笔尖为的tableView那么你指定的所有者,当您创建的。)

编辑

好了,从你的代码贴:

[[NSBundle mainBundle] loadNibNamed:@"IssueCell" owner:self options:nil];

您将所有者指定为“self”,因此'self.gridViewCellContent'应该是刚刚从nib加载的新单元格,假定您在nib中建立了正确的连接。当加载笔尖时,与笔尖中的“文件所有者”建立的任何连接现在都将变为“自己”(您的视图控制器)。

(似乎很奇怪,你正在加载的笔尖在那里,当方法需要一个AQGridView *作为参数,但我想你知道你在做什么有)

+0

我已经加入其中,我使用gridViewCellContent为例。 – 2011-12-21 16:00:39

+0

更新了我的答案。 – 2011-12-21 16:06:49

+0

那么每次调用这个方法的时候,我都会创建一个新的IssueCell?这是不好的...我只需要确定单元格的宽度和高度,也许我应该硬编码这个。 – 2011-12-21 16:08:38