0

データベースから取得した配列カウントに従って、複数のUIButton(カードとして)サブビューを配置しました。UIScrollViewそれとは別に、無限スクロールの開発に成功し、正常に動作しています。だから私は「覚えている」というオプションを持っています。覚えているをタップするとすぐに、カード(UIButtonサブビューとして)がスクロール時に表示される頻度が少なくなります。これを達成するにはどうすればよいですか。つまり、特定のインデックスの配列は、UIScrollView.Any ロジックまたはアイデアであまり表示されないようにする必要がありますか? 無限スクロールまでの私のコードは次のとおりです。

-(void)createCards
{     
[self addCardWithName:[NSString stringWithFormat:@"%@",[entryArray objectAtIndex:      
([entryArray count]-1)]] atPosition:0];

for (int i = 1; i < ([entryArray count]+1); i++) {
    NSString *titleString = [NSString stringWithFormat:@"%@",[entryArray objectAtIndex:i-1] ];
    UIButton *buttonView1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [buttonView1 setFrame:CGRectMake(i*320, 0, 320, 180)];
    [buttonView1 setTitle:titleString forState:UIControlStateNormal];
    buttonView1.tag=i;
    [scrollViewForCard addSubview:buttonView1];
}

[self addCardWithName:[NSString stringWithFormat:@"%@",[entryArray objectAtIndex:0]] atPosition:([entryArray count]+1)];

scrollViewForCard.contentSize = CGSizeMake(480*([entryArray count]+1), 180);
[scrollViewForCard scrollRectToVisible:CGRectMake(320,0,320,180) animated:NO];
}

- (void)addCardWithName:(NSString*)titleString atPosition:(int)position
{
 UIButton *buttonView1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[buttonView1 setFrame:CGRectMake(position*320, 0, 320, 180)];
[buttonView1 setTitle:titleString forState:UIControlStateNormal];
[scrollViewForCard addSubview:buttonView1];
}

#pragma mark scroll view-delegate

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
 int randomInt2 = arc4random() % [entryArray count];    
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender 
{    
if (sender.contentOffset.x == 0) {
    [sender scrollRectToVisible:CGRectMake((320*[entryArray count]),0,320,180) animated:NO];
}
else if (sender.contentOffset.x == ([entryArray count]+1)*320) {
    [sender scrollRectToVisible:CGRectMake(320,0,320,180) animated:NO];
}
}
4

1 に答える 1

0

クリックを記憶すると、次のようにすべてのサブビュー ボタンを削除できます。

while ([self.scrollView viewWithTag:[button tag]] != nil)
        [[self.scrollView viewWithTag:[button tag]] removeFromSuperview];

さて、覚えカードの表示頻度を減らします。元の配列と同じ長さのブール配列を定義します。記憶されたカードには YES の値を設定し、記憶されていないカードには No の値をアレイの対応する位置に設定します。

どんどん編集していきます。

于 2013-10-20T11:15:14.073 に答える