Trying to display array of images, code returns iphone to home screen
Solution 1
for ( NSString *image in photos )
{
UIImage *image = [UIImage imageNamed:[photos objectAtIndex:i]];
...
This is your problem. You have an NSString
and a UIImage
named the same thing. When you redeclare your NSString
as a UIImage
, you are confusing your the forin
loop. The loop seems to still think that you have an NSString
, when in reality, you have a UIImage
. So our first step is to try replacing that code with this code instead:
for ( NSString *imageName in photos )
{
UIImage *image = [UIImage imageNamed:imageName];
...
However, that code won't work either. Fortunately, your images
array already stores UIImages
, so your don't need an NSString
at all! Thus you can replace the first three lines of your loop with this:
for ( UIImage *image in photos )
{
...
That's it! You don't need your UIImage *image = ...
line at all since it's created in the parentheses.
Hope this helps!
Solution 2
In photos
you already store UIImage objects. Why you trying in cycle loop crete UIImage
from UIImage
?
UIImage *image = [UIImage imageNamed:[photos objectAtIndex:i]];
You should do like this:
UIImage *image = [photos objectAtIndex:i];
Jack Nutkins
I live and work in the South-East of England as a Power Platform Consultant.
Updated on June 26, 2022Comments
-
Jack Nutkins almost 2 years
Here is the problem code:
The code is to display an array of images which can then be scrolled through.
- (void)viewDidLoad { [super viewDidLoad]; NSArray *photos = [[NSArray arrayWithObjects: [UIImage imageNamed:@"Event.png"], [UIImage imageNamed:@"Logo.png"], [UIImage imageNamed:@"default.png"], [UIImage imageNamed:@"LittleLogoImage.png"], nil] retain]; // TODO – fill with your photos // note that the view contains a UIScrollView in aScrollView int i=0; int width = 0; int height = 0; for ( NSString *image in photos ) { UIImage *image = [UIImage imageNamed:[photos objectAtIndex:i]]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.contentMode = UIViewContentModeScaleAspectFit; imageView.clipsToBounds = YES; imageView.frame = CGRectMake( imageView.frame.size.width * i++, 0, imageView.frame.size.width, imageView.frame.size.height); [aScrollView addSubview:imageView]; width = imageView.frame.size.width; height = imageView.frame.size.height; [imageView release]; } aScrollView.contentSize = CGSizeMake(width*i, height); aScrollView.delegate = self; }
Any ideas?
[Session started at 2011-05-07 22:46:47 +0100.] 2011-05-07 22:46:49.314 ALPHA[1171:207] load01 2011-05-07 22:47:13.749 ALPHA[1171:207] 2 2011-05-07 22:47:13.751 ALPHA[1171:207] dealloc01 2011-05-07 22:47:13.755 ALPHA[1171:207] load02 2011-05-07 22:47:19.791 ALPHA[1171:207] 4 2011-05-07 22:47:19.792 ALPHA[1171:207] dealloc02 2011-05-07 22:47:19.795 ALPHA[1171:207] -[UIImage length]: unrecognized selector sent to instance 0x4b20f60 2011-05-07 22:47:19.797 ALPHA[1171:207] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage length]: unrecognized selector sent to instance 0x4b20f60' * Call stack at first throw: ( 0 CoreFoundation
0x00dca5a9 exceptionPreprocess + 185 1 libobjc.A.dylib
0x00f1e313 objc_exception_throw + 44 2 CoreFoundation
0x00dcc0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 3
CoreFoundation
0x00d3b966 __forwarding + 966 4
CoreFoundation
0x00d3b522 _CF_forwarding_prep_0 + 50 5 UIKit
0x003e3568 _UIImageAtPath + 36 6
ALPHA
0x000037fd -[PhotosView viewDidLoad] + 597 7 UIKit
0x0036a089 -[UIViewController view] + 179 8 ALPHA
0x00002af3 -[ALPHAViewController displayView:] + 500 9 ALPHA
0x00002707 -[ALPHAAppDelegate displayView:] + 60 10 ALPHA
0x00002cdd -[View2 viewPhotos:] + 99 11 UIKit
0x002ba4fd -[UIApplication sendAction:to:from:forEvent:] + 119 12 UIKit
0x0034a799 -[UIControl sendAction:to:forEvent:] + 67 13 UIKit
0x0034cc2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 14 UIKit
0x0034b7d8 -[UIControl touchesEnded:withEvent:] + 458 15 UIKit
0x002deded -[UIWindow _sendTouchesForEvent:] + 567 16 UIKit
0x002bfc37 -[UIApplication sendEvent:] + 447 17 UIKit 0x002c4f2e _UIApplicationHandleEvent + 7576 18 GraphicsServices
0x01722992 PurpleEventCallback + 1550 19 CoreFoundation
0x00dab944 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 52 20 CoreFoundation 0x00d0bcf7 __CFRunLoopDoSource1 + 215 21 CoreFoundation
0x00d08f83 __CFRunLoopRun + 979 22 CoreFoundation
0x00d08840 CFRunLoopRunSpecific + 208 23 CoreFoundation
0x00d08761 CFRunLoopRunInMode + 97 24 GraphicsServices
0x017211c4 GSEventRunModal + 217 25 GraphicsServices
0x01721289 GSEventRun + 115 26 UIKit 0x002c8c93 UIApplicationMain + 1160 27 ALPHA
0x000026a8 main + 102 28 ALPHA
0x00002639 start + 53 )terminate called after throwing an instance of 'NSException'
Thanks again,
Jack