2013-04-05 34 views
29

Tôi có 10 UIImageViews làm điều tương tự (chúng có một số phương pháp void thay đổi hình ảnh của chúng bằng bộ hẹn giờ). UIImageView của tôi là một lối thoát và tôi muốn kết nối tất cả 10 imageViews với cùng một lối thoát, nhưng trình tạo giao diện không cho phép tôi.Tôi làm cách nào để sử dụng IBOutletCollection để kết nối nhiều UIImageViews với cùng một ổ cắm?

Tôi thấy rằng có giải pháp, IBOutletCollection. Bất cứ ai có thể giải thích cho tôi làm thế nào để sử dụng điều này để kết nối nhiều imageViews đến cùng một ổ cắm?

Trả lời

78

Tuyên bố một tài sản để giữ IMAGExem của bạn và sau đó treo chúng lên trong xây dựng giao diện như bình thường

@property (nonatomic, strong) IBOutletCollection(UIImageView) NSArray *imageViews; 

nó chỉ là một bình thường NSArray nhưng khi nib được nạp nó sẽ được áp dụng với nhân IMAGExem bạn


Cập nhật

Trong tệp tiêu đề để bạn xem bộ điều khiển có nhiều của IMAGExem trên bạn cần phải thêm bất động sản trên - nó có thể trông giống như thế này:

@interface MyViewController : UIViewController 

@property (nonatomic, strong) IBOutletCollection(UIImageView) NSArray *imageViews; 
// other properties 

@end 

Bây giờ trong xây dựng giao diện bạn kết nối tất cả các IMAGExem của một khách sạn này.

enter image description here enter image description here

Bây giờ tôi chỉ làm việc với các bộ sưu tập imageViews

for (UIImageView *imageView in self.imageViews) { 
    imageView.image = someImage; 
} 
+1

Nhưng tôi chỉ có một IMAGExem trong mã của tôi và đó là những gì tôi muốn. Tôi muốn kết nối hình ảnh này bằng mã với nhiều imageViews trong chế độ xem trong bảng phân cảnh. – BalestraPatrick

+0

Bạn cần tạo một mảng để giữ tham chiếu đến tất cả các imageView này. Cách để làm điều này là với một 'IBOutletCollection' như tôi đã hiển thị ở trên –

+0

Nhưng hình ảnh nào tôi cần phải điền nó nếu chỉ có 1 hình ảnh? – BalestraPatrick

Các vấn đề liên quan