ios - 根据用户默认值启用分段 Controller 索引

标签 ios swift

我正在尝试启用 UISegmentedController索引根据 UserDefaults .但我的问题是,如果函数返回 true,我不知道如何启用索引。

我有一个主视图 Controller ,它有 segmentedController .

假设我有 4 个索引。 0 启用,1、2、3、4 禁用。现在如果分数是 >= value ,我想启用索引 1。

我知道我可以像这样启用和禁用 segmentAt:segmentedControl.setEnabled(true, forSegmentAt: 1) // can also be false但如何将其实现到函数中。

这就是我想要做的:

class func checkIfEligibleForNextDifficulty(key: String, score: Int) -> Bool{
        let userDefaults = UserDefaults.standard

        if userDefaults.integer(forKey: key) >= score{
            return true
        }

        return false
    }

我是这样使用它的:

if Util.checkIfEligibleForNextDifficulty(key: "diff2", score: 8){
     //Here I want to enable the index 1
}

这种事情的最佳方法是什么?我应该声明一些全局变量吗?

最佳答案

您可以为级别 之类的概念建模,并且可以根据分数 创建级别。因此,当您使用分数初始化 Level 时,您将自动推断级别。

然后,假设级别将是一个 int 枚举,将帮助您将其与分段控件的索引相匹配。

要根据分数启用级别,您可以创建如下函数。

enum Level: Int {
    case beginner
    case medium
    case advanced
    case expert
}

//MARK: Score & Enabling levels

extension Level {

    init(score: Int) {
        switch score {
        case 1..<8: self = .beginner
        case 8..<20: self = .medium
        case 20..<100: self = .advanced
        case 100..<Int.max: self = .expert
        default: self = .beginner
        }
    }

    func enabledLevels() -> [Level] {
        switch self {
        case .beginner: return [.beginner]
        case .medium: return [.beginner, .medium]
        case .advanced: return [.beginner, .medium, .advanced]
        case .expert: return [.beginner, .medium, .advanced, .expert]
        }
    }
}

作为练习,尝试调整我的解决方案以添加 UserDefaults,这并不困难。

希望对您有所帮助,解决您的问题。 :)

关于ios - 根据用户默认值启用分段 Controller 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596903/

相关文章:

ios - 这是在 Swift 中使用回调的正确方法吗?

ios - Xcode Storyboard 警告 : Constraint referencing items turned off in current configuration. 在当前配置中关闭此约束

ios - 本地 UserNotifications 的限制

ios - 将 UIPanGestureRecognizer 锁定到某个方向

ios - UICollectionView 首先显示最旧的帖子,我希望它显示最新的帖子

ios - 以编程方式添加 UILabel 不可见

swift - 我怎样才能使这个 Swift 事件处理程序样板更简洁?

iOS8 检查设备是否有 Touch ID

xml - 无法加载带有 UICollectionVIewCell 数据的 UIView

ios - 如何将对象放置在中心图像周围的阵列中?