我有 2 个滚动视图。我在第一个滚动视图上放了很多按钮。当我在第一个滚动视图中单击一个按钮时,相关按钮会填充第二个滚动视图。
我希望第一个滚动视图中的按钮具有段控制的效果。即,当单击一个按钮时,其图像会变暗,并且在单击第一个滚动视图中的其他按钮之前无法再次单击。
如何做到这一点?任何示例代码表示赞赏!谢谢!
我有 2 个滚动视图。我在第一个滚动视图上放了很多按钮。当我在第一个滚动视图中单击一个按钮时,相关按钮会填充第二个滚动视图。
我希望第一个滚动视图中的按钮具有段控制的效果。即,当单击一个按钮时,其图像会变暗,并且在单击第一个滚动视图中的其他按钮之前无法再次单击。
如何做到这一点?任何示例代码表示赞赏!谢谢!
您不能只跟踪上次单击的按钮,然后将该按钮重置为活动状态,然后将您现在单击的按钮设置为非活动状态吗?只需创建一个属性 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;
}
尝试在滚动视图中添加分段控件。
- (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.
}
超级简单,非常难看,但它确实有效。您可以通过检查图像和按钮的交互状态来进一步优化它,因此您不会在每次循环时都设置图像。
-(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];
}
}
}
}