0

我有 2 个滚动视图。我在第一个滚动视图上放了很多按钮。当我在第一个滚动视图中单击一个按钮时,相关按钮会填充第二个滚动视图。

我希望第一个滚动视图中的按钮具有段控制的效果。即,当单击一个按钮时,其图像会变暗,并且在单击第一个滚动视图中的其他按钮之前无法再次单击。

如何做到这一点?任何示例代码表示赞赏!谢谢!

4

3 回答 3

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 回答
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 回答
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 回答