让我们说我的UISegmentedControl有8个编号的段。我希望用户能够一次打开2,3或更多。切换他们。基本上就像一个字节中的位。这可能吗?我相信它是在普通的Mac OS X上,但我似乎无法在iPhone SDK中找到一种方法。
如果我必须通过将按钮放入视图来模拟这个,有没有办法执行以下操作:
答案 0 :(得分:8)
使用UIKit是不可能的。我建议创建一个自定义控件或一组UISwitch
控件,代表UISegmentedControl中的每个选项。
答案 1 :(得分:7)
这是我发现的最佳自定义控件,允许同时选择多个段:
https://github.com/yonat/MultiSelectSegmentedControl
这是UISegmentedControl的子类,很方便。我在这里分叉了:
https://github.com/stewartmacdonald/MultiSelectSegmentedControl
并在自述文件中添加了一些代码示例,并添加了一个方法,允许您获取所有选定段的标题的NSArray。
答案 2 :(得分:2)
我认为最简单的方法是使用UIButton创建自己的分段控件。
马
答案 3 :(得分:1)
现在似乎有办法在XCode中执行此操作。在“属性”检查器中,有一个包含“细分”,“标题”,“图像”,“行为”的部分。行为选项为“已启用”和“已选择”。您可以为多个细分选择“已选择”。
答案 4 :(得分:0)
我建议您尝试https://github.com/tayhalla/THSegmentedControl
它是UISegmentedControl
的实际子类,因此它非常适合Interface builder和所有内容。
答案 5 :(得分:0)
为来自Google的人解答:现在可以更改UISegmentedControl的行为。转到检查器->模式->选择任何而不是选择一个。 为了找出选择了哪些段,我建议创建一个像这样的函数:
extension UISegmentedControl {
func getBarState() -> [Bool] {
var states: [Bool] = []
for i in 0..<segmentCount {
states.append(isEnabledForSegment(forSegment: i))
}
return states
}
}
当Google在搜索OSX版本时将我带到这里时,我还将发布NSSegmentedControl的有效解决方案:
extension NSSegmentedControl {
func getBarState() -> [Bool] {
var states: [Bool] = []
for i in 0..<segmentCount {
states.append(isSelected(forSegment: i))
}
return states
}
}