SwiftUI 如何为滑块指定最小值和最大值并在文本中显示其值?

Smu*_*aco 5 ios swift swiftui

import SwiftUI

struct ContentView : View {
    var body: some View {
        PasswordGeneratorSettings(settingsConfiguration: PasswordGeneratorSettings.Settings.init(passwordLength: 20))
    }
}


struct PasswordGeneratorSettings : View {
    @State var settingsConfiguration: Settings
    struct Settings {
        var passwordLength = UInt()
    }
    var body: some View {
        NavigationView {
            List {
                Slider(value: $settingsConfiguration.passwordLength) { pressed in
                    Text("Password Length: \(settingsConfiguration.passwordLength)")
                }
                }.navigationBarTitle(Text("Settings"))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我正在制作一个密码生成器,我想从一个最小长度为 1 、最大长度为 512 的滑块开始,并带有一个显示其值(作为整数)的标签,但这就是我所需要尝试的表格视图(列表)左侧的更新标签,右侧的滑块,但这甚至无法编译。

太久没读:我正在尝试:

  1. 了解如何使用滑块设置最小值和最大值

  2. 在表格视图单元格的左侧有一个带有滑块值(作为整数)的标签,滑块在右侧。

我想在没有 UIKit 的情况下仅使用 SwiftUI 来完成所有这一切(如果需要的话还可以组合)。

Sha*_*von 2

您的代码无法编译,因为您需要在滑块值参数中使用 double 。您可以使用以下代码来实现您的要求。Slider 采用三个参数值:from 和 through。用简单的语言来说,从是 minValue,到是 maxValue,并且在任何给定时间“value”将返回滑块中的当前值。

struct PasswordGeneratorSettings : View {
    @State var settingsConfiguration: Settings
    struct Settings {
        var passwordLength: Double = 1.0
    }
    var body: some View {
        NavigationView {
            List {
                HStack {
                    Text("Password Length: \(Int(settingsConfiguration.passwordLength))")
                    Slider(value: $settingsConfiguration.passwordLength, from: 1, through: 512)
                }
                .padding()
            }.navigationBarTitle(Text("Settings"))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)