所以你有一个DieViewController,但你需要不同的实例有不同的边数。
@interface DieViewController
…
@property (nonatomic) NSInteger numberOfSides;
…
@end
问题是如何将正确数量的边传达给每个包含的实例。这就是嵌入转场的用武之地。在故事板中,将故事板嵌入转场标识符设置为唯一的(我将使用6SidedDie)。最后,在ViewController 中添加-prepareForSegue:sender:
@@implementation ViewController
…
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"6SidedDie"]) {
DieViewController *dieViewController = segue.destinationViewController;
dieViewController.numberOfSides = 6;
}
}
…
@end
当然,您可以将其混合使用以产生大量骰子。这是可以处理标识符6SidedDie 和10SidedDie 的代码。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier hasSuffix:@"Die"]) {
DieViewController *dieViewController = segue.destinationViewController;
if ([segue.identifier hasPrefix:@"6Sided"]) {
dieViewController.numberOfSides = 6;
} else if ([segue.identifier hasPrefix:@"10Sided"]) {
dieViewController.numberOfSides = 10;
}
}
}
更新
您可以使用self.viewControllers 数组访问DieViewController 实例中的内容。
DieViewController *dieViewController = self.viewControllers[0]; // The first die view controller
if (dieViewController.numberOfSides == 6) {
// This is the six sided die.
}
注意:self.viewControllers 不会被订购。您需要查看numberOfSides 以查看这是哪种类型的模具。