2012-10-31 3 views
0

UIScrollViewMKHorizion 메뉴 (Scroll 뷰의 하위 클래스)의 동적 이미지를 그려야합니다. 이제는 scrollview에 Subview 이미지를 추가합니다. 루프는 스크롤 뷰에 하위 뷰를 추가 할 때 완벽하게 작동했습니다. 이제 부모 클래스에서 업데이트 된 데이터에 대한 스크롤 뷰를 터치해야합니다. 만지지 않았다면 업데이트 된 데이터가 표시되지 않습니다. 아래 코드는이상한 UIScrollview의 동작

-(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]; 
    } 

제발 도와주세요. 스크롤보기를 터치해야하는 이유는 무엇입니까? 다른 방법을 재정의해야합니까?

+0

대단히 감사합니다. 위임장에 대해 ans가 있습니까? – Mangesh

+1

'[self setNeedsDisplay];'시도해 보셨습니까? –

답변

1

메인 스레드에 있는지 확인 했습니까? GCD Queue를 사용하고있을 수도 있습니다.

+0

감사합니다. ASHTTPReuest의 컴파일 블록에서 reloaddata를 호출했습니다. 고맙습니다. – Mangesh

0

스크롤바를 맨 위에 올리려고합니다. 질문이 올바르게 표시되지 않지만 도움이 될 수 있습니다. 작동하는지 아닌지 알려주세요 .. !!!

해피 코딩 !!!!

+0

+1 감사합니다 덕분에 – Mangesh