如何使用不同的图像获取uisegmentedcontrol中的每个Segment?

时间:2014-10-23 06:50:07

标签: ios uisegmentedcontrol

我需要在UISegmentController的每个片段上使用不同的图像,我在Stackoverflow中尝试了很多解决方案,但没有一个满足我的需要。我是IOS的新手,所以请帮助我。

还可以使用其他一些jpg文件更改每个选择的图像。

目前我正在使用这种方法

UIImage *segmentUnselected =
[UIImage imageNamed:@"26.png"];


[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
                                           forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

但我希望每个细分都有不同的图像。 有什么办法吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试根据细分指数为每个细分设置图片?例如,假设您在segmentedControl中有三个片段,并且想要为片段设置三个不同的图像。你可以这样做:

[self.mySegmentedControl setImage:[UIImage imageNamed:@"MYIMAGE1.PNG" forSegmentAtIndex:0];
[self.mySegmentedControl setImage:[UIImage imageNamed:@"MYIMAGE2.PNG" forSegmentAtIndex:1];
[self.mySegmentedControl setImage:[UIImage imageNamed:@"MYIMAGE3.PNG" forSegmentAtIndex:2];

当您想要更改值的图像时,可以创建一个处理segmentedControl UIControlValueChanged的方法。像这样:

-(void)valueDidChange
{
    switch ([self.mySegmentedControl selectedSegmentIndex]) {
            case 0:
                [self.mySegmentedControl setImage:[UIImage imageNamed:@"SOME_OTHERIMAGE"] forSegmentAtIndex:0];
                break;
            case 1:
                [self.mySegmentedControl setImage:[UIImage imageNamed:@"SOME_OTHERIMAGE"] forSegmentAtIndex:1];

                break;
            case 2:
                [self.mySegmentedControl setImage:[UIImage imageNamed:@"SOME_OTHERIMAGE"] forSegmentAtIndex:2];

                break;
            default:
                break;
        }
}

编辑:在您的viewDidLoad中,您可以为UISegmentedControl设置操作,以响应添加的方法。像这样,

[self.mySegmentedControl addTarget:self action:@selector(valueDidChange) forControlEvents:UIControlEventValueChanged];

答案 1 :(得分:0)

也许你可以看看SMSegmentView,它允许你为一个片段设置图像/文字:

Screenshot

这是link for this framework。项目页面应该让您了解如何使用它,源代码也附带一个示例。