假设我有以下xib:
在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 - &gt;实际网格视图中建立了一个插座连接。这对我来说很有意义,因为我在这个对象中有一个网格视图,并希望连接到它,所以我可以从代码访问它。
单击文件所有者时,在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;
}
答案 0 :(得分:9)
加载自定义表格视图单元格时非常相似(我假设您在tableView中执行此操作:cellForRowAtIndexPath:方法)。您加载nib,指定所有者,并且该所有者对象获取“文件所有者”占位符在nib本身中具有的所有连接。
我希望这有道理吗?
如果您发布了tableView:cellForRowAtIndexPath:,则可以看到该连接的位置。 (或者,如果您为tableView注册了一个nib,那么您在创建它时指定了所有者。)
修改强>
好的,所以从你发布的代码:
[[NSBundle mainBundle] loadNibNamed:@"IssueCell" owner:self options:nil];
您将所有者指定为'self',因此'self.gridViewCellContent'应该是刚从nib加载的新单元格,假设您在nib中建立了正确的连接。加载笔尖后,对笔尖中“文件所有者”的任何连接现在都将变为“自我”(您的视图控制器)。
(看起来很奇怪你在那里加载nib,当那个方法需要一个AQGridView *作为参数时,但我想你知道你在那里做什么)