2012-03-07 27 views
8

Tôi có mã này đang cố chạy một bộ hình ảnh đơn giản trong một chu kỳ. Tất cả tôi có trong ứng dụng được một UIImageView khai báo trong tập tin .h Xem lý lịch thành điều khiển của tôi:[UIImageView _isResizable]: bộ chọn không được nhận dạng được gửi đến dụ SIGABRT

@property (strong, nonatomic) IBOutlet UIImageView *imageDisplay; 

Và sau trong phương pháp viewDidLoad tập tin .m của tôi:

NSMutableArray *imageView = [[NSMutableArray alloc] init]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim1.png"]]]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim2.png"]]]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim3.png"]]]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim4.png"]]]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim5.png"]]]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim6.png"]]]; 
[imageView addObject:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"EyeAnim7.png"]]]; 

imageDisplay.animationImages = imageView; 
imageDisplay.animationDuration = 0.25; 
imageDisplay.animationRepeatCount = 50; 
[imageDisplay startAnimating]; 

Mã này dường như bị đâm trên dòng "imageDisplay.animationImages", như thể tôi tạo UIImageView, tạo getter và setter của nó, và xây dựng, nó vẫn ổn cho đến khi tôi bỏ ghi chú dòng đó. Nếu tôi bỏ ghi chú nó, nó vẫn cho tôi lỗi cho đến khi tôi xóa UIImageView và tạo một cái mới.

Không quá chắc chắn điều gì đang xảy ra, mọi trợ giúp đều được đánh giá cao!

+0

Khi bạn nói sự cố xảy ra, lỗi cụ thể mà nó gặp phải là gì? – Will

Trả lời

13

hoạt ảnhMục hình ảnh PHẢI chỉ chứa các đối tượng UIImage. Mảng của bạn chứa các đối tượng UIImageView.

Ngoài ra mã của bạn không an toàn - nếu một trong các tài nguyên sẽ không tồn tại ứng dụng sẽ sụp đổ (cố gắng thêm đối tượng nil vào mảng có thể thay đổi). Điều này sẽ an toàn hơn nhiều:

#define kNumberOfImages 7 


NSMutableArray *imageView = [[NSMutableArray alloc] init]; 

for(NSUInteger i = 1; i <= kNumberOfImages; i++) { 
    UIImage *anImage = [UIImage imageNamed:[NSString stringWithFormat:@"EyeAnim%d", i]]; 
    if(anImage) { 
     [imageView addObject:anImage]; 
    } 
} 

self.imageDisplay.animationImages = imageView; 
self.imageDisplay.animationDuration = 0.25; 
self.imageDisplay.animationRepeatCount = 50; 
[self.imageDisplay startAnimating]; 
16

Tôi rất mới với mục tiêu-c và tôi cũng gặp lỗi này, nhưng vì một lý do khác. Tôi chỉ muốn đăng giải pháp của mình cho bất kỳ ai khác có thể đang gặp khó khăn.

Vì vậy, về cơ bản tôi có một lớp tùy chỉnh được gọi là ImagesDetailViewController kế thừa từ UIViewController và có thuộc tính hình ảnh.

@interface ImagesDetailViewController : UIViewController 
@property (strong, nonatomic) UIImage *image; 
@end 

sau đó tôi kết nối với lớp học của tôi để UIImageView tôi trên kịch bản của tôi như vậy

@interface ImagesDetailViewController() 
@property (nonatomic, weak) IBOutlet UIImageView *imageView; 
@end 

Trong phương pháp viewDidLoad của tôi, tôi đã cố gắng để thiết lập hình ảnh để xem hình ảnh của tôi như thế này và nhận được các lỗi nêu trên (biến hình ảnh của tôi được khởi tạo theo phương thức prepareForSegue)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.imageView setImage:self.image]; 
} 

Vì vậy, tôi đã bối rối khi tôi cá là bạn cũng vậy. Vấn đề phải làm với bảng phân cảnh. Nhấp vào UIImageView của tôi và sau đó điều hướng đến Thanh tra kết nối, tôi đã bằng cách nào đó tạo 2 cửa hàng tham chiếu (oops ...) và một người đang trỏ đến một biến được gọi là hình ảnh. Vì vậy, khi chương trình đang chạy [self.imageView setImage: self.image] self.image thực sự là một thể hiện của UIImageView thay vì UIImage.

+0

Bạn là anh hùng của tôi! Connection Inspector đã làm các trick! –

+4

Hành vi rất khủng khiếp của xcode .. nếu bạn đã tạo một lối thoát và sau đó bạn thay đổi tên biến, kết nối đầu ra không tự động cập nhật. Bạn cần xóa kết nối và tạo kết nối mới – edrian

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