滚动视图+段按钮+ iOS

时间:2012-12-10 00:54:49

标签: ios button uiscrollview scrollview uisegmentedcontrol

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

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

如何实现这一目标?任何示例代码表示赞赏!谢谢!

3 个答案:

答案 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];
            }
        }

    }
}