0

画像の URL を取得しようとしているオンライン データがあり、それらの画像をUIPageControl.

ラインで[carousel setImages:[NSArray arrayWithObjects:@"1.png", @"2.png", @"3.png", nil]]; the images are set

それぞれの画像を設定したいと思います。私が抱えている問題の 1 つは、画像の数が事前にわからないことです。また、取得しているデータは文字列 (画像への URL) であり、UIImage ではありません。

for (int i = 0; i < [publicDataArray count]; i++)
{
    NSDictionary *dict = [publicDataArray objectAtIndex:i];
    for(NSString *key in dict) {

     NSString *someString = [[dict objectForKey:@"photo"] objectForKey:@"url"];

        NSLog(@"some string %@",someString);

    }

}

NSLog(@"publicDataArray count %lu",(unsigned long)[publicDataArray count]);


    [carousel setImages:[NSArray arrayWithObjects:@"1.png", @"2.png", @"3.png", nil]];


    // Add carousel to view
    [self.view addSubview:carousel];

出力NSLog:

2013-06-25 11:54:01.094 some string http://***.com/uploads/img/d/1.jpg
2013-06-25 11:54:01.094 some string http://***.com/uploads/img/d/2.jpg
2013-06-25 11:54:01.095 some string http://***.com/uploads/img/d/3.jpg

2013-06-25 11:54:01.097 publicDataArray count 3

および私のカルーセル クラス コード .m ファイル:

    #import "Carousel.h"

@implementation Carousel

@synthesize pageControl;
@synthesize images;

#pragma mark - Override images setter

- (void)setImages:(NSArray *)newImages
{
    if (newImages != images)
    {
        [newImages retain];
        [images release];
        images = newImages;

        [self setup];
    }
}

#pragma mark - Carousel setup

- (void)setup
{
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.frame];
    [scrollView setDelegate:self];
    [scrollView setShowsHorizontalScrollIndicator:NO];
    [scrollView setPagingEnabled:YES];
    [scrollView setBounces:NO];

    CGSize scrollViewSize = scrollView.frame.size;

    for (NSInteger i = 0; i < [self.images count]; i++)
    {
        CGRect slideRect = CGRectMake(scrollViewSize.width * i, 0, scrollViewSize.width, scrollViewSize.height);

        UIView *slide = [[UIView alloc] initWithFrame:slideRect];
        [slide setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0]];

// これが現在クラッシュの原因となっています: '-[UIImageView length]: unrecognized selector //sent to instance.

  **UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.frame];
        [imageView setImage:[UIImage imageNamed:[self.images objectAtIndex:i]]];
        [slide addSubview:imageView];
        [imageView release];**

        [scrollView addSubview:slide];
        [slide release];
    }

    UIPageControl *tempPageControll = [[UIPageControl alloc] initWithFrame:CGRectMake(0, scrollViewSize.height - 20, scrollViewSize.width, 20)];
    [self setPageControl:tempPageControll];
    [tempPageControll release];
    [self.pageControl setNumberOfPages:[self.images count]];
    [scrollView setContentSize:CGSizeMake(scrollViewSize.width * [self.images count], scrollViewSize.height)];

    [self addSubview:scrollView];
    [scrollView release];
    [self addSubview:self.pageControl];
}

#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    [self.pageControl setCurrentPage:page];
}

#pragma mark - Cleanup

- (void)dealloc
{
    [pageControl release];
    [images release];
    [super dealloc];
}

@end

助けてくれてありがとう

4

2 に答える 2

1

最初に NSMutable 配列で URL を取得し、次の方法で URL から画像を取得します。

for (int i = 0; i < [publicDataArray count]; i++)
{
    NSDictionary *dict = [publicDataArray objectAtIndex:i];

    for(NSString *key in dict)
    {
        NSString *someString = [[dict objectForKey:@"photo"] objectForKey:@"url"];

        NSLog(@"some string %@",someString);

        [allProfileImages addObject:someString];
    }
}

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[allProfileImages objectAtIndex:i]]]]];
于 2013-06-25T11:12:29.417 に答える