2015-10-13 72 views
4

基本上,我有一个视图,其中可以有无限量的UIViews。我希望能够设置self.numberOfSections = 8self.numberOfSections = 2,然后分别生成相同数量的UIImages,然后可以对其进行操作。当另一个属性的数量增加时,生成更多属性

目前我在我的代码中有很多IBInspectible图片,无论我是否有2个numberOfSections或100个numberOfSections,都会出现这些图片。我想以某种方式能够根据我的numberOfSections编号创建UIImages

rotaryWheelView

storyBoardInspect

如果我设定数量的部分,以2在这里 - 我可以设置在故事板上的图片,但所有其它IBInspectable元素出现过,将不能使用,因为那里只有两个部分。有没有办法只有需要的人出现?我想在故事板中设置图像。有没有一种方法来重构这个,以免有这么多的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"]; 
    } 
} 
+0

你不能生成一次编译器开始编译程序属性。在运行程序之前必须先设置它们。 –

+0

以后如何在view.m文件中将IBInspectable添加到属性中?所以它已经存在@property(nonatomic)UIImage * rotaryImage1,然后我可以将IBInspectable添加到它。 –

+1

数组,ibouletcollection,数据源。但绝对不会产生属性。 – Sulthan

回答

5

首先我会说你的设计模式存在缺陷。如果您有很多IBInspectable UIImageView实例,那么您可能应该使用IBOutletCollection。其次,你的要求是不可能的。为什么不创建一个IBInspectable值类型来设置故事板中的部分数量,并通过编程方式从该数字生成UIImageView对象?

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

Interface Builder

+0

好吧,我没有意识到IBOutletCollection的存在。我希望能够在故事板中设置图像,但基本上它始终显示所有IBInspectables,尽管只有2个numberOfSections。 –

+0

@HannahLouisaCarney我不确定你在问什么。你想要一个'IBInspectable int'来改变在Interface Builder中为你生成的视图数量?这是不可能的,你需要以编程方式添加你的视图。 – JAL

+0

我想我只想要两个IBInspectable RotaryImages出现在故事​​板中设置,如果你有numberOfSections设置为2,8出现,如果你已经设置为8.因为你可以有无限的图像,但我只能输入限制IBDesignables在我的代码中。 –