2012-05-21 36 views
0

我得到了這些代碼的30,用相同的實現:IBOutlet中的UIImageView

// .H

@interface ViewController : UIViewController{ 
IBOutlet UIImageView *circle; 
IBOutlet UIImageView *circle2; 
} 
@property (nonatomic, retain) IBOutlet UIImageView *circle; 
@property (nonatomic, retain) IBOutlet UIImageView *circle2; 

// .M

@implementation ViewController 

@synthesize circle; 
@synthesize circle2; 

- (void)viewDidLoad 
{ 
circle = [[UIImageView alloc] 
         initWithImage:[UIImage imageNamed:@"Circle.png"]]; 
circle2 = [[UIImageView alloc] 
         initWithImage:[UIImage imageNamed:@"Circle.png"]]; 
} 

而且在我的代碼的某個地方,進出口將其添加爲子視圖。

我的問題是,有沒有辦法縮短它的維護時間。

+2

你是什麼意思縮短和爲什麼你使用IBOutlet時編程創建UIImageView? – saadnib

+0

我應該使用什麼? – Bazinga

+0

僅當需要與XIB文件建立連接時才需要IBOutlet,但由於您不在XIB中創建這些圖像視圖,因此無需在此處添加IBOutlet。 – saadnib

回答

0

您可以使用一個IBOutletCollection而不是30 IBOutlets。儘管你可能想在每個UIImageView上設置標籤,所以你仍然可以區分它們。

(這個回答假設你用筆尖。你實例的UIImageView S IN viewDidLoad如果是刪除線。)

+0

即使Im只使用一個圖像,它也可以使用? – Bazinga

+0

如果你想顯示相同的圖像30次,是的,沒有什麼能阻止你。你可以重用'UIImage's,但不能'UIImageView's。 –

+0

好的,我會試試你的答案。 – Bazinga

0

如果您使用像 - Circle1.png,Circle2.png這樣的名稱,那麼您可以在for循環中創建此循環。

喜歡的東西 -

for (int i = 0; i < imageCount ; i++) { 
    circle = [[UIImageView alloc] 
        initWithImage:[UIImage imageNamed:[NSString stringWithFormat: @"Circle%d.png" , i]]]; 
} 
+0

我的形象只有一個。我希望能夠一次又一次地使用它。 – Bazinga

+0

告訴確切的情況?你想要30次相同的圖像? – rishi

+0

是的。我想在不同的位置/座標中放置相同的圖像。 – Bazinga

0

有沒有到你把他們的上海華這些視圖的模式?如果是這樣,你可以使用一個到30的for循環,並以編程方式創建視圖並將它們添加到他們的超級視圖中。

因此,例如:

for (i = 0; i < 100; i++) 
    { 
     UIImageView* circle = [[UIImageView alloc] 
         initWithImage:[UIImage imageNamed:@"Circle.png"]]; 
     [self.view addSubview:circle]; 
    } 

會增加,你會想要的圖像視圖100。當然,你需要調整循環中每個視圖的位置,但這是一般的想法。

0

同時創造這個視圖控制器通過幀作爲parameter.thats唯一改變的儀式? ?圖像是相同的,因爲沒有其他屬性..它可能會工作