gpt4 book ai didi

ios - 有没有办法跟踪 UISegmentedControl 的索引选择?

转载 作者:行者123 更新时间:2023-11-28 12:54:45 27 4
gpt4 key购买 nike

我有一个带有一些数字的 UISegementedControl。当用户点击一个数字时,它会弹出许多 UITextFields

我用一个 switch 语句和每个数字的案例运行这个,但我想清理代码,删除 switch 语句,并制作一个循环来检查在分段控件中选择的数字,循环遍历文本数组字段并弹出那么多文本字段。

当用户选择一个数字并继续选择更大的数字时,它工作正常。

但是,如果用户选择的数字小于之前的选择,它什么都不做(不隐藏不需要的文本字段)。

有没有一种方法可以跟踪在分段控件中所做的选择,以便我可以进行一些逻辑语句来检查选择的新数字是否 > 或 < 低于之前的数字?

var chosenNumber = segmentedControl.selectedSegmentIndex
var textArray : UITextField = [item1,item2,item3,item4,item5,item6,item7,item8]

for text in textArray[0...chosenNumber] {
text.hidden = false
}

//logic here to check if newNumber is < than chosenNumber
for text in textArray[newNumber..<8] {
text.hidden = true

最佳答案

如果您使用 KVO,您可以观察到新旧值的变化...

例如:

    @IBOutlet weak var segmentedControl: UISegmentedControl!
var kvoContextSegmentedControl: Int = 0

override func viewDidLoad() {
super.viewDidLoad()

self.segmentedControl.addObserver(self, forKeyPath: "selectedSegmentIndex", options: [.Initial, .Old, .New], context: &kvoContextSegmentedControl)
}

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if ((keyPath == "selectedSegmentIndex") && context == &kvoContextSegmentedControl) {
let oldValue = change![NSKeyValueChangeOldKey]
let newValue = change![NSKeyValueChangeNewKey]
debugPrint("OldValue: \(oldValue)")
debugPrint("NewValue: \(newValue)")
}else{
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}
}

输出如下:

1) 当 View 加载时(0 是默认选择的段):

OldValue: nil
NewValue: Optional(0)

2)点击不同段时:

i) 点击 3(当 0 是最后一个时):

OldValue: Optional(0)
NewValue: Optional(3)

ii) 点击 2(当 3 是最后一个时):

OldValue: Optional(3)
NewValue: Optional(2)

关于ios - 有没有办法跟踪 UISegmentedControl 的索引选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35308251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com