Objective c 如何从故事板加载原型单元?

Objective c 如何从故事板加载原型单元?,objective-c,uikit,ocunit,sentestingkit,Objective C,Uikit,Ocunit,Sentestingkit,有没有一种方法可以加载原型单元以及故事板中定义的任何IBOutlet连接 更新 我想用UICollectionViewCell对该单元进行单元测试,因此希望在UIViewController上下文之外加载它 实际上,与您可以从nib加载自定义视图的方式相同,您可以指定其文件的所有者并设置其IBOutlets。通常您可以使用UITableViewController或UITableView。然后还应创建UITableViewCell类。创建UITableViewCell类后,转到“UIStoryb

有没有一种方法可以加载原型单元以及故事板中定义的任何IBOutlet连接

更新

我想用UICollectionViewCell对该单元进行单元测试,因此希望在UIViewController上下文之外加载它

实际上,与您可以从nib加载自定义视图的方式相同,您可以指定其文件的所有者并设置其IBOutlets。

通常您可以使用UITableViewController或UITableView。然后还应创建UITableViewCell类。创建UITableViewCell类后,转到“UIStoryboard”,选择单元格:

然后在Identity Inspector内设置UITableViewCell类:

现在将元素添加到UITableViewCell并将它们与类连接

现在将CellIdentifier添加到属性检查器中:

不可以访问UITableViewController或UIViewController,其中包含UITableViewDelegate方法并按如下方式调用单元格不要忘记导入ViewController顶部的UITableViewCell类:

编辑:据我所知,除了在ViewController中创建原型UITableViewCells外,不可能从故事板的任何位置使用原型UITableViewCells。 我还没有在单元测试中尝试过这一点,但您可以轻松地将自定义UITableViewCell放入单独的nib中

要在视图控制器中使用它,您需要在TableView中注册单元格

UINib *nib = [UINib nibWithNibName:@"ABCNameOfYourNibCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"myCustomCell"];
然后在cellForRowAtIndexPath中使用如下单元格:

出于测试目的,您应该能够:

ABCNameOfYourNibCell *testCell = 
[[ABCNameOfYourNibCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];

如果您需要测试重用行为,您应该在此处设置一个reuseIdentifier,并在单元格上调用prepareForReuse。

您应该将IBOutlets连接到UITableViewCell自定义子类的接口。您可以更具体一点吗?您的意思是,如果原型单元作为IBOutlet连接到视图控制器?对不起,最后一个问题,您想从另一个UIViewController加载单元,这应该是你想要的不相关的答案,因为问题是如何在单独的测试类中加载在故事板中创建的原型单元。我认为答案是“否”,唯一的方法是将其声明为独立的nib,对吗?
static NSString *CellIdentifier = @"myCustomCell";

ABCNameOfYourNibCell *cell = 
[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
ABCNameOfYourNibCell *testCell = 
[[ABCNameOfYourNibCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];