小编jar*_*aez的帖子

为什么按钮在嵌入 SwiftUI 表单时不起作用?

我正在构建一个 SwitUI 表单。我需要绘制一些自定义滑块。为此,我创建了一个视图 (SliderView),并将其多次包含在表单中。我花了一些时间来管理 Binding 以在父视图中获取 Sliders 的值,但我能够做到 :-) 我无法理解的最大谜团是为什么我放置在孩子中的按钮视图,当它们嵌入到表单中时不起作用。它们在 VStack 中工作正常。这里的代码:

//  SliderView.swift

import SwiftUI

struct SliderView: View {
    var name: String
    var min: Double
    var max: Double
    var step: Double
    var defaultValue: Double

    let numberFormatter: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.minimumFractionDigits = 0
        formatter.maximumFractionDigits = 2
        formatter.minimumIntegerDigits = 1
        return formatter
    }()


    @Binding var selectedValue: Double
    var body: some View {
        HStack{
            Text("\(name)")
            Slider(value: $selectedValue, in: self.min...self.max, step: self.step)
            Button(action: {
                if (self.selectedValue - self.step) >= …
Run Code Online (Sandbox Code Playgroud)

swiftui

20
推荐指数
2
解决办法
6159
查看次数

为什么我的SwiftUI应用程序中未更新ObservedObject数组?

我正在玩SwitUI,试图了解ObservableObject的工作原理。我有一个Person对象数组。当我将新的Person添加到数组中时,它将重新加载到我的View中。但是,如果我更改现有Person的值,则不会在视图中重新加载它

//  NamesClass.swift
import Foundation
import SwiftUI
import Combine

class Person: ObservableObject,Identifiable{
    var id: Int
    @Published var name: String

    init(id: Int, name: String){
        self.id = id
        self.name = name
    }

}

class People: ObservableObject{
    @Published var people: [Person]

    init(){
        self.people = [
            Person(id: 1, name:"Javier"),
            Person(id: 2, name:"Juan"),
            Person(id: 3, name:"Pedro"),
            Person(id: 4, name:"Luis")]
    }

}
Run Code Online (Sandbox Code Playgroud)
struct ContentView: View {
    @ObservedObject var mypeople: People

    var body: some View {
        VStack{
            ForEach(mypeople.people){ person in
                Text("\(person.name)")
            }
            Button(action: {
                self.mypeople.people[0].name="Jaime"
                //self.mypeople.people.append(Person(id: 5, …
Run Code Online (Sandbox Code Playgroud)

swiftui

9
推荐指数
5
解决办法
2594
查看次数

如何在 SwiftUI 中使用 ObservedObject 制作 Picker?

我正在尝试从 Rest API 获取数据中心列表并将它们显示在选择器中,以便用户可以选择一个。当我用静态列表做它时,它工作正常。但是,动态检索数据中心似乎效果不佳。

我正在使用 Xcode 11 (GM)

这是数据中心对象

struct Datacenter:Codable, Hashable, Identifiable{ 
    let id: String
    var location: String
}
Run Code Online (Sandbox Code Playgroud)

这是 ObservedObject(它的属性 datacenters 是一个 Datacenter 对象数组)

@ObservedObject var datacenters_controller : DatacentersController
@State private var selectedDatacenter = 0
Run Code Online (Sandbox Code Playgroud)

这是我的第一次尝试:

Picker(selection: $selectedDatacenter, label: Text("Datacenter")) {
   ForEach(0 ..< datacenters_controller.datacenters.count) {
     Text(self.datacenters_controller.datacenters[$0].location)
   }
}
Run Code Online (Sandbox Code Playgroud)

Swift 抱怨以下错误:

ForEach<Range<Int>, Int, Text> count (4) != its initial count (0). `ForEach(_:content:)` should only be used for *constant* data. Instead conform data to `Identifiable` or use `ForEach(_:id:content:)` and provide …
Run Code Online (Sandbox Code Playgroud)

swiftui

1
推荐指数
1
解决办法
3528
查看次数

标签 统计

swiftui ×3