我成功地将environmentObject appSettings传递到了我的视图中。我可以使用它来修改我的字体和我的视图中的选择器。但是,如果我试图访问视图init()中的environmentObject发布变量,它将崩溃:
Thread 1: Fatal error: No ObservableObject of type AppSettings found.
A View.environmentObject(_:) for AppSettings may be missing as an ancestor of this view.
在自定义的environmentObject视图初
我正在尝试将来自名为userSettings的EnvironmentObject的值赋给名为categoryData的类实例,但在尝试将值赋给此处的类ObserverCategory(userID: self.userSettings.id)时出现错误
错误提示:Cannot use instance member 'userSettings' within property initializer; property initializers run before 'self' is available
下面是我的代码:
这是我的环境对象类:
//user s
我得到了上面的错误,不知道如何解决它。我有一个包含布尔值的对象数组,需要为每个布尔值显示一个切换。
下面是代码。
class Item: Identifiable {
var id: String
var label: String
var isOn: Bool
}
class Service: ObservableObject {
var didChange = PassthroughSubject<Void, Never>()
var items: [Item] {
didSet {
didCh
我需要在SwiftUI中显示一个折叠菜单,可以将一个bool值作为绑定变量传递到子视图,但在尝试从字典传递该值时却陷入了困境。
见下面的代码:
struct MenuView: View {
@EnvironmentObject var data: APIData
@State var menuCollapsed:[String: Bool] = [:]
@State var isMenuCollapsed = false;
// I am able to pass self.$isMenuCollapsed but self.$menuCollapsed[menuI
考虑以下扩展:
extension Array where Element == String {
func foo(){
}
}
然后考虑下面要分割的字符串,这样我就可以使用扩展名.
let string = "This|is|a|test"
let words = string.split(separator: "|")
问题是words是一个[Substring],而不是[String],所以我不能调用foo()。
因此,在Swift 4中,如何拆分字符串以返回[String]而不是[Substring]
我有代码,使我的过滤栏消失时,用户已经点击了一个产品(衬衫或裤子)。所有这些都发生在Marketplace选项卡中。
我认为,一旦修复了bug,代码就会正常工作,但是,我无法摆脱关于缺少参数的buh。
市场代码是:
@Binding var shirtData : Shirt!
@Binding var showDetailShirt: Bool
@Binding var trouserData : Trouser!
@Binding var showDetailTrouser: Bool
var body: some View {
我的应用程序TodayPage和CalendarList页面有两个页面。我使用EnvironmentObject包装器在这两个页面之间传递数据。当TodayPage出现在onAppear modifier i call a function to generate days of calendar上时,直到现在,当我将文本添加到TodayPage列表中时,一切都很好,然后转到calendarList页面,然后再回到TodayPage,我添加到列表中的所有文本都消失了。我发现我可以通过向onAppear添加简单的if来避免数据丢失,但我不确定这个解决方案是否正确。
我必须上传大量代码,谢谢您的帮
我想通过swift协议在类中使用泛型类型:
public protocol WebSocketType {
// some interfaces
}
class _Network<WebSocketT: WebSocketType, Configuration: NetworkConfigurationType> {
// Use the generic type
let websocket: WebSocketT
init(host: String, api: String) {
// do something here...
我可以看到一个过滤器条。一个说“衬衫”,另一个说“裤子”。当选择“恤”时,它将显示衬衫的网格视图。当在过滤栏中选择“裤子”时,它显示了裤子的网格视图。
当我点击一个项目(衬衫或裤子),它会带我到一个不同的观点(更详细地展示产品)。然而,过滤器条仍然存在。我需要隐藏过滤栏,当一个项目被点击,它将用户带到一个详细的视图。
当产品被挖掘时,我需要隐藏市场视图。
我用于筛选条的ViewModel是:
enum MarketplaceFilterViewModel: Int, CaseIterable {
case shirts
case trousers
v
StepsEntity是一个核心数据实体。
当试图在TextField中显示字符串值时收到以下错误:“无法将'Published<StepsEntity>.Publisher‘类型的值转换为预期的参数类型’绑定‘”
我知道这是因为我的核心数据模型中的StepsEntity是@发布的。@已发表的作品在这里很棒,因为它允许所有的数据都被整洁地更新。如何在TextField中显示@发布?
下面是我收到错误的部分:
List {
VStack(alignment: .center) {
if let recipeSteps =
在本例中,当我拖到屏幕上时,为什么LabelViewRepresentable在每个"updateUIView“调用之前都要重新初始化?如果我使计数器成为@State属性而不是@EnvironmentObject属性,它只初始化一次,就像我所期望的那样。
import SwiftUI
class Counter: ObservableObject {
@Published var count = 0
}
struct CounterView: View {
@EnvironmentObject var counter: Counter
var body: some V
我正在学习SwiftUI,并修改了一个现有的示例,因为我想测试是否可以跨视图访问ObservableObject。在阅读文档时,我发现我应该为此使用@EnvironmentObject对象。我尝试过这种方法,但这不起作用:数组persons中填充了新的persons (使用调试器),但UI没有更新。如果我在@EnvironmentObject对象之外使用people属性,它会按预期工作。
我的代码:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var envTest: EnvTest
var bod
我有一个按钮,提供了数据,这是用来取消跟踪或跟踪一个用户。应该发生的是,我按下按钮,它会更改用户的isFollowing属性,然后文本从unfollow更新到follow。然而,这是行不通的。下面是我的代码,可以放在操场上(为了这一目的而简化的,只是为了显示核心元素):
struct User: Hashable, Identifiable {
let id = UUID()
var isFollowing: Bool
}
final class MyModel: ObservableObject {
@Published var users: [User] = [User(is
今天看到另一个问题时,我得到了一个惊喜:
let s = "1,a"
let arr = s.split(separator: ",")
let result = arr.compactMap{Int($0)} // ok
let result2 = arr.compactMap(Int.init) // error
为什么第3行是合法的,第4行不是合法的?我认为这两种说法“如果可能的话强迫输入的参数”是完全等价的。
我了解到第4行被随后的问题呛住了,我知道如何摆脱这一困难:
let result2 = arr.map(String.init).compactM
我第一次尝试编写一些SwiftUI代码,在尝试创建一个简单的表视图时遇到了一个问题。在这段代码中,teams是一个String数组,但是List给了我以下错误:Initializer 'init(_:rowContent:)' requires that 'String' conform to 'Identifiable'
var body: some View {
let teams = getTeams()
Text("Hello there")
List(teams) { te
我有一个主视图,它包含一个带有TabView的主体,每个选项卡都显示一个不同的列表。另外,我在主类的顶部声明了一个状态变量,如果我必须显示一个类似模态的视图,那么状态变量只是为了控制。
问题是,当我更改状态var的值时,主视图的所有主体都会用动画重新绘制。这不是期望的行为,因为我不会更改与更新该var的列表相关的数据。
struct HomeView: View {
@State private var selection = 0
@State var modalShown = false //This is the problematic var that makes a l
我有两门课:
class Glyph: ObservableObject {
...
@Published var manager: CoordinatesManager {
didSet {
print ("MANAGER DID SET IN GLYPH, \(manager.currentCoordinates)")
}
}
@Published var elements: [ MultidimensionalPoints ]
var path: Path {
在Xcode13Beta3上,我正在尝试为需要明确确认的工作表中的编辑细节视图找到一个很好的解决方案。
在DetailEditView中,我初始化了一个@State属性(editingModel),它是从我传递的@Binding (model)中初始化的。
struct DetailEditView: View {
@Binding var model: Model
@Binding var isEditing: Bool
@State private var editingModel: Model
init(model: Binding&l
我尝试将文本字段值分配给一个EnvironmentObject,但是得到了这个错误。无法将'String‘类型的值转换为所需的参数类型’Binding‘“ import SwiftUI
class FilterSelections: ObservableObject {
@Published var filters: [String: Any] = [
"testFilter": "na"]
@Published var fromDate: Date = Date()
@Published var testNu
我尝试在视图中传递可选的@State和非可选的@Binding,以便在那里编辑它。我所面临的问题是,Xcode正在使用Fatal error: Unexpectedly found nil while unwrapping an Optional value。但是,当我在调用该视图之前检查可选值时,它不是nil:Editing car is set: Optional("Audi A8")。我检查了其他人,所以建议如何解决这个问题,但是没有什么能帮助我理解出了什么问题。如何正确传递@State在SheetView中编辑
import SwiftUI
struct Ca