0

アプリの下部に、次のような xml フィードからのカスタム バナー画像を表示する領域があります。

<sponsor><image>image1.jpg</image></sponsor>
<sponsor><image>image2.jpg</image></sponsor>
<sponsor><image></image></sponsor>//image node is empty
<sponsor><image></image></sponsor>//image node is empty
<sponsor><image>image3.jpg</image></sponsor>
<sponsor><image>image4.jpg</image></sponsor>

これらの画像を配列で解析し、バナー広告を時間とともに変更し、同じサイクルを繰り返す必要があります。

これらの画像が表示領域に表示され、<image>ノードにコンテンツがない場合、領域は空白になります。必要なのは、空の<image>ノードをスキップして、ノードのコンテンツを画像で表示することです。

私はこの次のコードを使用しています:

バナー オブジェクトがあります。

bannerObj.m

@implementation bannerObj

@synthesize url,index;

@end

私の HomepageViewController.m のこのメソッドは、以下のような配列を格納します:

- (void)processCompleted{

NSMutableArray *bannerArray=[[self sponsorrssParser]sponsorrssItems];
banArray=[[NSMutableArray alloc]init];
bannerObj *bannObj = [[bannerObj alloc]init];


NSString *bannerImagestr;
for(int i=0; i<[bannerArray count]; i++){
    bannerImagestr = [[bannerArray objectAtIndex:i] BannerImage];

    NSLog(@"banner image str-------->>> %@",bannerImagestr);

    if(bannerImagestr != nil){

    bannerImagestr  = [ bannerImagestr  stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];

    NSURL *url = [NSURL URLWithString:bannerImagestr];
    NSData *data = [NSData dataWithContentsOfURL:url];

    img = [[[UIImage alloc] initWithData:data] autorelease];
        bannObj.url = img;
        bannObj.index = i;

    [banArray addObject:bannObj];

        NSLog(@"banner array---->>>%@",banArray);

    }
}

[spinner stopAnimating];
}

これは、領域に画像を設定するターゲット メソッドです。

-(void) targetMethod:(id) sender {


int countOfBanners=[banArray count];

NSLog(@"count of banners ----->> %d",countOfBanners);
if(numTimerTicks< countOfBanners)
{

     roundedButtonType.tag = [[banArray objectAtIndex:numTimerTicks]index];
    [roundedButtonType setBackgroundImage:[[banArray objectAtIndex:numTimerTicks]url]forState:UIControlStateNormal]; //sets the background Image
    numTimerTicks++;

}
else{
    numTimerTicks=0;
}

NSLog(@"count of timer ticks ----->> %d",numTimerTicks);
}

これにより、フィードの最後の画像が設定され、他のバナー画像を表示できません。誰でもこれで私を助けることができますか?

4

1 に答える 1

0

おっとっと!!for ループ内で呼び出すべきだっbannerObj *bannObj = [[bannerObj alloc]init];た.. :D 悪い.. :P

于 2012-07-05T13:07:42.750 に答える