0

UIScrollViewこの私が使用するMKHorizionメニュー(スクロールビューのサブクラス)に動的な画像を描画する必要があります。今、スクロールビューにサブビュー画像を追加します。ループは、スクロールビューにサブビューを追加するために完全に機能しました。親クラスでは、更新されたデータのスクロール ビューをタッチする必要があります。触れていない場合は、更新されたデータが表示されていません。以下はコードです

-(void) reloadData
{
    [self deleteAlliTem];
    self.itemCount = [dataSource numberOfImagesForMenu:self];
    self.backgroundColor = [dataSource backgroundColorForImage:self];

    UIFont *buttonFont = [UIFont boldSystemFontOfSize:15];
    int buttonPadding = 0;

    int tag = kButtonBaseTag;    
    int xPos = kLeftOffset;

    for(int i = 0 ; i < self.itemCount; i ++)
    {
      NSLog(@"*************************************************************");
        NSMutableDictionary *dictData=[dataSource horizMenuImage:self dictForItmeAtIndex:i];

        NSString *title=[dictData valueForKey:@"name"] ? [dictData valueForKey:@"name"] :  @"";

        UIImage* imageItem= [UIImage imageWithData:[Base64 decode:[dictData valueForKey:@"img"]]];
        int buttonWidth = 95;

         UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [customButton setTitle:title forState:UIControlStateNormal];
        customButton.titleLabel.font = buttonFont;
        [customButton setBackgroundImage:[UIImage imageNamed:@"addFriendStrip.png"] forState:UIControlStateNormal];
        [customButton setBackgroundImage:[UIImage imageNamed:@"addFriendStrip.png"] forState:UIControlStateSelected];
         customButton.tag = tag++;
        [customButton addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
         customButton.frame = CGRectMake(xPos, 70, buttonWidth + buttonPadding, 25);
        customButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        customButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

        customButton.titleEdgeInsets =UIEdgeInsetsMake(0, 10,0, 0);

        customButton.titleLabel.font = [UIFont fontWithName:@"Overlock-Bold" size:16];
        [customButton setTitleColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateNormal];
        [customButton setTitleColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1] forState:UIControlStateSelected];

         UIImageView* itemImageView = [[UIImageView alloc] initWithImage:imageItem];
        itemImageView.tag = 200 + customButton.tag;
        [itemImageView setFrame:CGRectMake(xPos, 0, buttonWidth + buttonPadding, 95)];
        [self addSubview:itemImageView];
        [itemImageView release];
        itemImageView = nil;
        [self addSubview:customButton];

        xPos += buttonWidth;
         xPos += buttonPadding;
        if (i != self.itemCount-1){
            xPos += 2.5; //5;  // Richa
        }
    }
    self.contentSize = CGSizeMake(xPos, 95);
     NSLog(@"############################################################################ - %d",[[self subviews] count]);
    [self scrollRectToVisible:CGRectMake(1, 0, self.frame.size.width, self.frame.size.height) animated:YES];
    }

これを整理するのを手伝ってください。スクロール ビューをタッチする必要があるのはなぜですか? 他のメソッドをオーバーライドする必要がありますか?

4

2 に答える 2

1

メインスレッドにあることを確認しましたか?GCD キューを使用している可能性があります。そのため、タッチするまで更新されません。

于 2012-11-02T05:49:39.790 に答える
0

スクロールビューを一番上に持ってくるようにしてください。質問が正しくわかりませんが、役立つかもしれません。それが機能しているかどうかを教えてください.. !!!

幸せなコーディング.!!!!

于 2012-11-01T12:14:46.970 に答える