SwiftUI:函数插入错误.是insert的func代码语法不正确,还是应该一起考虑其他方法



我有一个函数.insert错误。

只是.insert的func代码语法不正确,还是我应该一起考虑另一种方法?

import SwiftUI
struct SocialMediaSite: Identifiable {
let id = UUID()
var name: String
var isBlocked = false
}
struct BlockedSocialMediaSites: View {
@State private var newSocialMediaSite = ""
@State private var socialMediaSites: [SocialMediaSite] = [
SocialMediaSite(name: "FaceBook/Meta"),
SocialMediaSite(name: "FB Messenger"),
SocialMediaSite(name: "TicTok"),
SocialMediaSite(name: "Instagram"),
SocialMediaSite(name: "Twitter"),
SocialMediaSite(name: "SnapChat"),
SocialMediaSite(name: "WhatApp"),
SocialMediaSite(name: "WeChat"),
SocialMediaSite(name: "OkCupid"),
SocialMediaSite(name: "Reddit"),
SocialMediaSite(name: "Pintrest"),
SocialMediaSite(name: "MySpace"),
SocialMediaSite(name: "ClassMates"),
]
var body: some View {
NavigationView {
// ***** Header for page
VStack {
// Code for Page Header removed
// ***** Toggle List of the "popular" social media sites
List($socialMediaSites) { $SocialMediaSite in
HStack {
Toggle("", isOn: $SocialMediaSite.isBlocked)
if SocialMediaSite.isBlocked {
Text("BLOCKED")
.foregroundColor(.red)
.frame(width: 85, height: 20, alignment: .trailing)
}
Text(SocialMediaSite.name)
.frame(width: 120, height: 20, alignment: .leading)
}
.listRowBackground(Color(red: 240/255, green: 240/255, blue: 240/255))
.frame(width: 150, height: 20, alignment: .leading)
}
// **** textField for user input of new social media sites
ScrollView {
TextField("Add Social Media Site", text: $newSocialMediaSite)
.keyboardType(.emailAddress)
.submitLabel(.done)
.font(.custom("Helvetica", size: 16.0))
.textFieldStyle(RoundedBorderTextFieldStyle())
.foregroundColor(.blue)
.frame(width: 300, height: 30, alignment: .center)
.border(Color.gray, width: 2.0)
.padding(.leading, 5)
}
.frame(width: 400, height: 50, alignment: .center)
.padding(.top, 20)
.background(Color(red: 166/255, green: 170/255, blue: 180/255)
.brightness(0.09)
.opacity(0.69)
)
}.padding(.vertical, 20)
.onSubmit(addNewSocialMediaSite)
}
}
// ***** Inserts user input of textField into Array
func addNewSocialMediaSite() {
let userInputTextField = newSocialMediaSite
guard userInputTextField.count > 0 else { return }
// need more validation
withAnimation {
socialMediaSites.insert(userInputTextField, at: 0)
}
newSocialMediaSite = ""
}
}
// *****  Preview
struct BlockedSocialMediaSites_Previews: PreviewProvider {
static var previews: some View {
BlockedSocialMediaSites()
}
}

您的socialMediaSitesSocialMediaSites的数组,而不是字符串。您需要先创建一个新的SocialMediaSite

func addNewSocialMediaSite() {

/// `newSocialMediaSite` is a string
guard newSocialMediaSite.count > 0 else { return }
withAnimation {

/// create a new `SocialMediaSite`
let newSite = SocialMediaSite(name: newSocialMediaSite)
socialMediaSites.insert(newSite, at: 0)
}

newSocialMediaSite = ""
}

相关内容

最新更新