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

标签 ios swift uisegmentedcontrol

我有一个带有一些数字的 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/

相关文章:

iphone - 分段控件的更改值?

ios - 更改游戏纹理但图像未根据cocos hd definition替换

ios - 我可以使用我的 iPad 来测试我的应用程序,而不是仅使用与 XCode 捆绑在一起的 iOS 模拟器吗?

ios - Apple iOS 生产证书 - [ KeyChain Group ]

swift - 将应用分析数据传递给应用

ios - 使用 Content-Type : multipart/form-data 发出 Alamofire 请求

ios - 如何取消隐藏 UITableView 部分的动画?

ios - 单独选择SegmentedControl的字体

ios - 如何在单击 tableviewcell 中的按钮时更新 UIView

ios - NMAMapView 初始化失败 HERE iOS SDK 桥接