gpt4 book ai didi

ios - iOS中多个UIView的UIView继承

转载 作者:行者123 更新时间:2023-11-28 07:12:32 31 4
gpt4 key购买 nike

我正在尝试构建一个简单的 iOS 应用程序,它可以简单地掷不同面数的骰子(d20、d12 等...)

我想创建一个我将在同一个 UIViewController 中重复使用多次的 View ,如下所示:http://cl.ly/image/2s30353F3V1K (唯一改变的是边数)

我想不通的是如何在 Storyboard中正确创建 UI 元素,而不是简单地为每个不同数量的面复制和粘贴 ContainerView 的嵌入对象。

有没有一种简单的方法可以正确地对其进行子类化?我是 iOS Storyboard的新手,正在尝试使用 OO 原则。

最佳答案

所以你有一个 DieViewController,但你需要不同的实例有不同的边数。

@interface DieViewController

@property (nonatomic) NSInteger numberOfSides;

@end

问题是如何将适当数量的面传达给每个包含的实例。这就是嵌入转场的用武之地。在 Storyboard中,将 Storyboard嵌入转场标识符设置为唯一的东西(我将使用 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

当然,您可以将其混合以允许有很多骰子。下面是可以处理标识符 6SidedDie10SidedDie 的代码。

- (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 以查看这是哪种类型的骰子。

关于ios - iOS中多个UIView的UIView继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831880/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com