我有2个滚动视图。我在第一个滚动视图上放了很多按钮。当我在第一个滚动视图中单击一个按钮时,相关按钮将填充第二个滚动视图。
我希望第一个滚动视图中的按钮具有效果,就好像它们是段控制一样。即,当单击一个按钮时,其图像变暗,并且在单击第一个滚动浏览中的其他按钮之前无法再次单击。
如何实现这一目标?任何示例代码表示赞赏!谢谢!
答案 0 :(得分: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;
}
答案 1 :(得分: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.
}
答案 2 :(得分: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];
}
}
}
}