首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多行的UISegmentedControl

具有多行的UISegmentedControl
EN

Stack Overflow用户
提问于 2016-12-06 21:35:17
回答 2查看 981关注 0票数 2

我需要一个2行的UISegmentedControl,我不能实现它。我不想使用两个不同的UISegmentedControl。这个问题有什么解决方案吗?如何实现两行的UISegmentedControl?

EN

回答 2

Stack Overflow用户

发布于 2016-12-06 22:08:05

'UISegmentedControl‘不支持多行。如果你需要它,你必须自己构建它,或者找到一个提供它的第三方库。

正如Helium在他/她的评论中所建议的那样,您可以创建一个自定义控件,在内部管理2个或更多分段控件,并处理它们之间的状态变化。

说实话,分段控制并不是那么复杂。创建自定义2D分段控件并不难。如果这是一个关键的需求,那么你可能想要走那条路。

票数 1
EN

Stack Overflow用户

发布于 2018-04-30 14:39:12

基本上,您需要在每个分段控件上都有一个IBAction和IBOutlet。

对IBAction进行编码,以便单击其中一个分段控件将其他分段控件(未选中)的IBOutlet的selectedSegmentIndex设置为UISegmentedControlNoSegment。这会产生分段控件被链接的错觉。

然后,获得所选择的分段控制值的正确信息,简单地将分段控制的所有指标收集到一个常数中。

代码语言:javascript
复制
@IBOutlet weak var segment1: UISegmentedControl!
@IBOutlet weak var segment2: UISegmentedControl!
@IBOutlet weak var segment3: UISegmentedControl!
@IBAction func FirstSecond(_ sender: UISegmentedControl) {
    segment2.selectedSegmentIndex = UISegmentedControlNoSegment
    segment3.selectedSegmentIndex = UISegmentedControlNoSegment
}
@IBAction func ThirdFourth(_ sender: UISegmentedControl) {
    segment1.selectedSegmentIndex = UISegmentedControlNoSegment
    segment3.selectedSegmentIndex = UISegmentedControlNoSegment
}
@IBAction func FifthSixth(_ sender: UISegmentedControl) {
    segment1.selectedSegmentIndex = UISegmentedControlNoSegment
    segment2.selectedSegmentIndex = UISegmentedControlNoSegment
}
let segmentvalue = ["First","Second","Third","Fourth","Fifth","Sixth"]
@IBAction func FirstSecond(_ sender: UISegmentedControl) {
    segment2.selectedSegmentIndex = UISegmentedControlNoSegment
    segment3.selectedSegmentIndex = UISegmentedControlNoSegment
    let valueINeed = segmentvalue[segment1.selectedSegmentIndex]
}
@IBAction func ThirdFourth(_ sender: UISegmentedControl) {
    segment1.selectedSegmentIndex = UISegmentedControlNoSegment
    segment3.selectedSegmentIndex = UISegmentedControlNoSegment
    let valueINeed = segmentvalue[segment2.selectedSegmentIndex + 2]
}
@IBAction func FifthSixth(_ sender: UISegmentedControl) {
    segment1.selectedSegmentIndex = UISegmentedControlNoSegment
    segment2.selectedSegmentIndex = UISegmentedControlNoSegment
    let valueINeed = segmentvalue[segment3.selectedSegmentIndex + 4]
}

有关详细信息,请访问here: multi row segemented control in swift

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40996688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档