0

私は2つのスクロールビューを持っています。最初のスクロール ビューに多くのボタンを配置しました。最初のスクロール ビューで 1 つのボタンをクリックすると、関連するボタンが 2 番目のスクロール ビューに表示されます。

最初のスクロール ビューのボタンに、セグメント コントロールのような効果を持たせたい。つまり、1 つのボタンをクリックすると、その画像が薄暗くなり、最初のスクロール ビューの他のボタンがクリックされるまで、再度クリックすることはできません。

これを達成する方法は?サンプルコードは大歓迎です!ありがとう!

4

3 に答える 3

1

スクロール ビュー内にセグメント化されたコントロールを追加してみてください。

- (void)viewDidLoad
{
    [super viewDidLoad];

    journals = [[NSMutableArray alloc]init];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 49, 320, 29)];
    self.segmentedControl.frame = CGRectMake(0, 0, 640, 29);

    scrollView.contentSize = CGSizeMake(self.segmentedControl.frame.size.width, self.segmentedControl.frame.size.height -1);
    scrollView.showsHorizontalScrollIndicator = NO;

    self.segmentedControl.selectedSegmentIndex = 0;

    [scrollView addSubview:self.segmentedControl];
    [self.view addSubview:scrollView];

    [self fillJournals];

    // Do any additional setup after loading the view, typically from a nib.
}
于 2013-12-16T09:26:14.290 に答える
1

どのボタンが最後にクリックされたかを追跡し、そのボタンをアクティブな状態にリセットし、現在クリックしているボタンを非アクティブな状態に設定することはできませんか? プロパティ lastClicked を作成して、次のようにします。

-(IBAction) buttonClicked:(UIButton *)sender {
    [self.lastClicked setUserInteractionEnabled:YES];
    [self.lastClicked setImage:[UIImage imageNamed:@"enabledImage"] forState:UIControlStateNormal];
    [sender setUserInteractionEnabled:NO];
    [sender setImage:[UIImage imageNamed:@"disabledImage"] forState:UIControlStateNormal];
    self.lastClicked = sender;      
}
于 2012-12-10T05:11:51.313 に答える
0

非常にシンプルで非常に醜いですが、機能します。画像とボタンの相互作用状態をチェックすることで、これをさらに最適化できるため、これがループするたびに画像を設定する必要はありません。

-(void) buttonClicked:(UIButton *)sender {
    for (UIButton *btn in self.scrollView.subviews) {
        if ([sender isKindOfClass:[UIButton class]]) {

            if (btn == sender) {
                [btn setUserInteractionEnabled:NO];
                [btn setImage:[UIImage imageNamed:@"disabledImage"] forState:UIControlStateNormal];
            } else {
                [btn setUserInteractionEnabled:YES];
                [btn setImage:[UIImage imageNamed:@"enabledImage"] forState:UIControlStateNormal];
            }
        }

    }
}
于 2012-12-10T01:01:57.713 に答える