我曾经在列表视图本身中定义过这些行,但是现在我将这些行分解为自己的视图,我得到了这个模糊的错误。呼叫中的参数#1缺少自变量
它告诉我插入'<#LocalizedStringKey#>,'来解决这个问题,但是我不确定为什么需要它,或者我应该输入什么作为Localized String Key。
var body: some View {
NavigationView{
if #available(iOS 14.0, *) {
List{
ForEach(result) { (log: Expenses) in
Button(action: {
self.editExpense = log
print(log.id)
}) {
HStack() {
VStack(alignment: .leading, spacing: 8) {
Text(log.nameText).padding(.horizontal, -7)
Text(log.dateText).font(.caption).padding(.horizontal, -7)
}
Spacer()
VStack(alignment: .trailing, spacing: 8){
Text(log.amountText)
Text(log.expenseAccount?.capitalized ?? "").font(.caption)
}
}
}
}
.onDelete(perform: onDelete)
}.padding(.horizontal, -20).navigationTitle("Expense List")
但是,现在我创建了一个行视图,并希望为“费用”中的每个项目调用它。由于某种原因,我在下面的行中遇到了错误。
import SwiftUI
import CoreData
@available(iOS 14.0, *)
struct ExpenseList: View {
@State var editExpense: Expenses?
@State var addExpense = false
@Environment(\.managedObjectContext)
var context: NSManagedObjectContext
@FetchRequest(fetchRequest: Expenses.expensesList)
private var result: FetchedResults<Expenses>
init(predicate: NSPredicate?, sortDescriptor: NSSortDescriptor) {
let fetchRequest = NSFetchRequest<Expenses>(entityName: Expenses.entity().name ?? "Expenses")
fetchRequest.sortDescriptors = [sortDescriptor]
if let predicate = predicate {
fetchRequest.predicate = predicate
}
_result = FetchRequest(fetchRequest: fetchRequest)
}
var body: some View {
NavigationView{
List{
ForEach(result) { (log: Expenses) in
Button(action: { <----- Missing argument for parameter #1 in call
self.editExpense = log
})
ExpenseRow(name: log.nameText, date: log.dateText, amount: log.amountText, account: log.expenseAccount ?? "")
}
.onDelete(perform: onDelete)
}.navigationTitle("Expense List")
ExpenseRow视图,以备不时之需
import SwiftUI
@available(iOS 14.0, *)
struct ExpenseRow: View {
let name: String
let date: String
let amount: String
let account: String
var body: some View {
HStack() {
VStack(alignment: .leading, spacing: 8) {
Text(name).padding(.horizontal, -7)
Text(date).font(.caption).padding(.horizontal, -7)
}
Spacer()
VStack(alignment: .trailing, spacing: 8){
Text(amount)
Text(account.capitalized).font(.caption)
}
}
}
}
您需要定义按钮的外观,如下所示:
Button(action: {
self.editExpense = log
}) {
/// ↓ put `ExpenseRow` inside the brackets!
ExpenseRow(name: log.nameText, date: log.dateText, amount: log.amountText, account: log.expenseAccount ?? "")
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句