Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从列表中选择多个项目并在SwiftUI中更改其颜色_Ios_Arrays_List_Text_Swiftui - Fatal编程技术网

Ios 从列表中选择多个项目并在SwiftUI中更改其颜色

Ios 从列表中选择多个项目并在SwiftUI中更改其颜色,ios,arrays,list,text,swiftui,Ios,Arrays,List,Text,Swiftui,我正在寻找一种方法,以类似的方式解决这个问题。有可能吗 对于单个项目没有问题。所选项目将为白色,其余为我自己的颜色“listTextColor”。但是,“selectedItems”数组中选择和保存的元素是否可能以类似的方式显示为白色,而其余元素则以不同的颜色显示 示例代码: @State var recordArray: Array = arrayRecords @State var selectedItems: Array = [] @State var selections: Str

我正在寻找一种方法,以类似的方式解决这个问题。有可能吗

对于单个项目没有问题。所选项目将为白色,其余为我自己的颜色“listTextColor”。但是,“selectedItems”数组中选择和保存的元素是否可能以类似的方式显示为白色,而其余元素则以不同的颜色显示

示例代码:

 @State var recordArray: Array = arrayRecords
 @State var selectedItems: Array = []
 @State var selections: String?

List() {
                            ForEach(self.recordArray, id: \.self) { record in
                                Text(record)
                                    .onTapGesture {
                                        self.selections = record
                                        self.selectedItems.append(record)
                                        
                                }
                                .foregroundColor(self.selections == record ? Color(.white) : Color(self.listTextColor2))
                            }
                        }

最好使用视图模型,而不是普通字符串,并在其中使用标志为行着色

struct ContentView: View {
    @State var recordArray: [RecordItem]
    
    var body: some View {
        List() {
            ForEach(0..<self.recordArray.count, id: \.self) { i in
                VStack {
                    Text(self.recordArray[i].title)
                }
                .border(Color.black)
                .onTapGesture {
                    self.recordArray[i].isSelected.toggle()
                    self.recordArray[i] = self.recordArray[i]
                }
                .foregroundColor(self.recordArray[i].isSelected ? Color(.red) : Color(.green))
            }
        }
    }
}


class RecordItem {
    var title = ""
    var isSelected = false
}
struct ContentView:View{
@状态变量recordArray:[RecordItem]
var body:一些观点{
列表(){

ForEach(0..您最好使用视图模型,而不是普通字符串,并在其中使用标志为行着色

struct ContentView: View {
    @State var recordArray: [RecordItem]
    
    var body: some View {
        List() {
            ForEach(0..<self.recordArray.count, id: \.self) { i in
                VStack {
                    Text(self.recordArray[i].title)
                }
                .border(Color.black)
                .onTapGesture {
                    self.recordArray[i].isSelected.toggle()
                    self.recordArray[i] = self.recordArray[i]
                }
                .foregroundColor(self.recordArray[i].isSelected ? Color(.red) : Color(.green))
            }
        }
    }
}


class RecordItem {
    var title = ""
    var isSelected = false
}
struct ContentView:View{
@状态变量recordArray:[RecordItem]
var body:一些观点{
列表(){

我找到了这个问题的答案

 @State var recordArray: Array = arrayRecords
 @State var selectedItems: Array = []
 @State var selections: String?

var body: some View {
List() {
                            ForEach(self.recordArray, id: \.self) { record in
                                Text(record)
                                    .onTapGesture {
                                                                                   if self.selectedItems.first(where: { $0 as! String == record } ) != nil {
                                            self.selectedItems.removeAll(where: { $0 as! String == record } )
                                        } else {
                                            self.selectedItems.append(record)
                                        }
                                        
                                }
                                .foregroundColor((self.selectedItems.first(where: { $0 as! String == record } ) != nil) ? Color(.white) : Color(self.listTextColor2))
                            }
                        }
}

我找到了这个问题的答案

 @State var recordArray: Array = arrayRecords
 @State var selectedItems: Array = []
 @State var selections: String?

var body: some View {
List() {
                            ForEach(self.recordArray, id: \.self) { record in
                                Text(record)
                                    .onTapGesture {
                                                                                   if self.selectedItems.first(where: { $0 as! String == record } ) != nil {
                                            self.selectedItems.removeAll(where: { $0 as! String == record } )
                                        } else {
                                            self.selectedItems.append(record)
                                        }
                                        
                                }
                                .foregroundColor((self.selectedItems.first(where: { $0 as! String == record } ) != nil) ? Color(.white) : Color(self.listTextColor2))
                            }
                        }
}

将record.id追加/删除到selectedItems中并检查当前记录id是否在数组中。将record.id追加/删除到selectedItems中并检查当前记录id是否在数组中。但它将为列表中的所有文本着色。我只想为“录制”着色项目。然后它应该看起来像列表中的checked。上面的代码只为点击的项目着色。您尝试过吗?我找到了解决此问题的其他解决方案。但它将为列表中的所有文本着色。我只想为“taped”着色项目。然后它应该看起来像列表中的checked。上面的代码只对点击的项目着色。您尝试过吗?我找到了解决此问题的其他解决方案。