【问题标题】:Generate more properties when another property's count increases当另一个属性的计数增加时生成更多属性
【发布时间】:2015-10-13 15:59:55
【问题描述】:

基本上,我有一个可以在其中包含无限数量的 UIView 的视图。我希望能够设置self.numberOfSections = 8 或self.numberOfSections = 2,然后分别生成相同数量的UIImages,然后可以对其进行操作。

目前,无论我有 2 个 numberOfSections 还是 100 个 numberOfSections,我的代码中都会出现许多 IBInspectible 图像。我希望能够根据我的 numberOfSections 号码以某种方式创建 UIImages。

如果我在这里将 Number Of Sections 设置为 2 - 我可以在情节提要中设置图像,但所有其他 IBInspectable 元素也会出现,因为只有 2 个部分,因此不会使用。有没有办法只显示需要的那些?我想在情节提要中设置图像。有没有办法重构它,以免有这么多 IBInspectables?

这就是我在代码中将图像设置为各种以编程方式生成的视图的方式。

-(void)drawRect:(CGRect)rect

    for (int i = 0; i < self.numberOfSections; i++) {
       NSString *rotaryName = [NSString stringWithFormat:@"rotaryImage%d", i + 1];
       id rotaryNameValue = [self valueForKey:rotaryName];
       [self.sectorView setValue:rotaryNameValue forKey:@"image"];
    }
}

【问题讨论】:

  • 一旦编译器开始编译程序,您将无法生成属性。必须在运行程序之前设置它们。
  • 以后有什么方法可以在 view.m 文件中将 IBInspectable 添加到属性中?所以它已经存在 @property (nonatomic) UIImage *rotaryImage1 然后我可以添加 IBInspectable 到它。
  • 数组,ibouletcollection,数据源。但绝对不会生成属性。

标签: ios objective-c uiimage ibdesignable ibinspectable


【解决方案1】:

首先我要说的是你的设计模式有缺陷。如果您有那么多 IBInspectable UIImageView 实例,您可能应该使用 IBOutletCollection。

其次,您的要求是不可能的。为什么不创建一个 IBInspectable 值类型来设置情节提要中的部分数量,并根据该数量以编程方式生成 UIImageView 对象?

@property (nonatomic, assign) IBInspectable int *sections;

【讨论】:

  • 好吧,我不知道 IBOutletCollection 存在。我希望能够在情节提要中设置图像,但基本上它总是显示所有 IBInspectables,尽管只有 2 个 numberOfSections。
  • @HannahLouisaCarney 我不确定你在问什么。您想要一个 IBInspectable int 来更改在 Interface Builder 中为您生成的视图数量吗?这是不可能的,您需要以编程方式添加视图。
  • 我想我只希望两个 IBInspectable RotaryImages 出现在情节提要中,如果你将 numberOfSections 设置为 2,如果你将它设置为 8,则出现 8。因为你可以拥有无​​限的图像,但我只能在我的代码中输入有限的 IBDesignables。
猜你喜欢
  • 2020-02-21
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 2017-01-16
  • 2019-07-08
相关资源
最近更新 更多