ここで、scrollView を使用して拡張ビューを構築しようとしているので、私のクラスは次のとおりです。
ButtonsScroller.h
これは私のコンポーネント クラスです。このクラスは UIView を拡張し、uiscrollview を持っています。
これは、このクラスのメイン メソッドです。
-(void)buildUi {
buttonsCount=[buttonsArray count];
NSLog(@"Building Scroll With %d Buttons",buttonsCount);
NSLog(@", every row has %d Buttons",countOfButtonsInOneRow);
NSLog(@", every button Width is : %d px",buttonWidth);
NSLog(@", every button height is : %d px",buttonHeight);
NSLog(@", space Between Buttons In One Row is : %d px",marginsBetweenButtons);
NSLog(@", space Between 2 rows is : %d px",marginsBetweenRows);
NSLog(@"and number Of Rows To Be Shown : %d row",rowsToShow);
int horizontalStart=horizontalStartFrom-buttonWidth;
int HORIZONTAL_CORDENATES=horizontalStart;
for(int bc=0;bc<buttonsCount;bc++){
NSLog(@"buttons Counter : %d",bc);
for(int g=0;g<countOfButtonsInOneRow;g++){
if(bc==buttonsCount || bc>buttonsCount){
break;
}else {
Expos *expo=[buttonsArray objectAtIndex:bc];
//ExpoUIButton : My Custom UIView with buttons in it
ExpoUIButton *btn=[[ExpoUIButton alloc]init];
[btn.name setText:expo.userName];
if(![expo.user_type isEqualToString:@"2"]){
NSLog(@"[expo.user_type isEqualToString:1");
[btn setType:0];
}
btn.frame=CGRectMake(HORIZONTAL_CORDENATES, VERTICAL_CORDENATES, buttonWidth, buttonHeight);
[scrollView addSubview:btn];
bc=bc+1;
HORIZONTAL_CORDENATES=HORIZONTAL_CORDENATES-(marginsBetweenButtons+buttonWidth);
}
NSLog(@"g : %d",g);
}
bc=bc-1;
HORIZONTAL_CORDENATES=horizontalStart;
VERTICAL_CORDENATES=VERTICAL_CORDENATES+(marginsBetweenRows+buttonHeight);
}
// ComputeRow Count
int rowCount=buttonsCount;
// NSLog(@"rowCount%4 : %d",(rowCount%4 ));
while((rowCount%countOfButtonsInOneRow) !=0){
NSLog(@"rowCount : %d",rowCount);
rowCount=rowCount+1;
}
float rowCounts=(rowCount/countOfButtonsInOneRow);
NSLog(@"rowCounts : %f",rowCounts);
float viewHeight=rowsToShow*(buttonHeight)+(rowsToShow*marginsBetweenRows)+(buttonHeight/2);
NSLog(@"viewHeight : %f",viewHeight);
if(self.showLoadMore){
if(loadMore==nil){
loadMore=[UIButton buttonWithType:UIButtonTypeCustom];
[loadMore setImage:[UIImage imageNamed:@"more"] forState:UIControlStateNormal];
[loadMore setImage:[UIImage imageNamed:@"more-f"] forState:UIControlStateHighlighted];
[loadMore setFrame:CGRectMake(130, VERTICAL_CORDENATES+3, 68, 15)];
[scrollView addSubview:loadMore];
}else {
[loadMore setFrame:CGRectMake(130, VERTICAL_CORDENATES+3, 68, 15)];
}
[scrollView setContentSize:CGSizeMake(SC_WIDTH, VERTICAL_CORDENATES+25)];
}else {
[scrollView setContentSize:CGSizeMake(SC_WIDTH, VERTICAL_CORDENATES)];
}
}
私のmainView Controllerで接続を開始し、接続が完了すると、このメソッドが呼び出されます
#pragma mark -
#pragma mark - YttpConnectionDelegate
-(void) YConnectionDoneWithArray:(NSMutableArray *)items {
NSLog(@"items : %d",[items count]);
if([items count]>0 ){
exposArray =items;
[productsList hideLoadingView];
[productsList setButtonsArray:exposArray];
[productsList buildUi ];
SEL selector = @selector(loadDataFromInternet);
[productsList loadMoreBtnSelector:selector target:self];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
} else {
[productsList hideLoadingMoreButton];
}
}
ビューを開いてボタンの最初のセットをロードすると、ビューはまだ問題ありませんが、2番目のボタンのセットが追加されたときに問題が発生し、uiscrollviewが粗くなり、すべてのボタン(古いものと新しいもの)がクリックできなくなります
また、firstVC ビューに戻って、最初のボタン セットを読み込んだ後で scrollviewVC 画面に移動すると、すべてのボタンがクリックできないので、何が問題なのですか?!
編集 :
これはリフレッシュの問題だと思いますか?