如何解决如何快速将所有文本字段值带到临时数组
我在Swift中还很陌生。 因此,我根据用户输入创建了多个部分,然后我希望从文本字段中获取所有数据。 1个部分包含4行(4个文本字段)。 接下来,我想对每个部分的数据进行处理。
应用程序的外观如下:
现在,正如我之前提到的,节的数量可以根据用户请求而有所不同。
在这里,我创建了Struct
和临时数组,如下所示:
struct LabelData {
var lbl1: Int
var lbl2: Int
var lbl3: Int
var lbl4: Int
}
var txtFieldArray = [LabelData]()
然后在cellForRow
中输入:
txtFieldValue?.addTarget(self,action: #selector(sectionTxtFieldDidChange),for: .editingChanged)
这是函数:
var row1: Int = 0
var row2: Int = 0
var row3: Int = 0
var row4: Int = 0
@objc func sectionTxtFieldDidChange(_ sender: UITextField) {
for rowIndex in 0...tableView.numberOfRows(inSection: 0) - 1 {
let indexPath = IndexPath(row: rowIndex,section: 0)
let cell = tableView.cellForRow(at: indexPath) as! CellOutlet
if rowIndex == 0 {
row1 = Int(cell.txtFieldSpecNumb.text!) ?? 0
}
else if rowIndex == 1 {
row2 = Int(cell.txtFieldSpecNumb.text!) ?? 0
}
else if rowIndex == 2 {
row3 = Int(cell.txtFieldSpecNumb.text!) ?? 0
}
else if rowIndex == 3 {
row4 = Int(cell.txtFieldSpecNumb.text!) ?? 0
}
}
}
@IBAction func btnShowResult(_ sender: UIButton) {
let x = LabelData(lbl1: row1,lbl2: row2,lbl3: row3,lbl4: row4)
txtFieldArray.append(x)
// print array
print(txtFieldArray)
}
第一部分的输入= 1,2,3,4; 结果很好,就像这样:
[(lbl1: 1,lbl2: 2,lbl3: 3,lbl4: 4)]
但这是针对1个部分的。如果我有多个部分,该怎么办。
在这种情况下,我也将var
放入了LabelData
并将其附加到Array之前。
我该如何做得更好?
谢谢
解决方法
有很多方法可以改善所提供的代码(例如,创建具有//MaReq est un restRequête
LaRéponse est un restRéponse
MaReq.URL="https://mywonderfulapi.ch/record"
MaReq.ContentType = //yourContentType
MaReq.Content = // YourContent
MaReq.Méthode=httpPost
LaRéponse=RESTEnvoie(MaReq)
SI ErreurDétectée ALORS
Erreur(HErreurInfo(hErrComplet))
SINON
info(LaRéponse.Contenu)
Info(UTF8VersChaîne(LaRéponse.Contenu))
rep = JSONVersVariant(LaRéponse.Contenu)
info(rep)
FIN
属性的UITextField
的子类),但是它属于基于观点的 。要回答您的特定问题,建议您删除IndexPath
,row1
,row2
和row3
,因为它们是多余的(您已经有row4
数据存储和访问)。
在您的txtFieldArray
中,添加以下行
cellForRow
然后,将您的cell.txtFieldValue?.tag = indexPath.section
更新为类似的内容
sectionTxtFieldDidChange
这样,@objc func sectionTxtFieldDidChange(_ sender: UITextField) {
let section = sender.tag
for rowIndex in 0...4 { //assuming there are always 4 rows in a section
let indexPath = IndexPath(row: rowIndex,section: section)
let cell = tableView.cellForRow(at: indexPath) as! CellOutlet
if rowIndex == 0 {
txtFieldArray[section].lbl1 = Int(cell.txtFieldSpecNumb.text!) ?? 0
} else if rowIndex == 1 {
txtFieldArray[section].lbl2 = Int(cell.txtFieldSpecNumb.text!) ?? 0
} else if rowIndex == 2 {
txtFieldArray[section].lbl3 = Int(cell.txtFieldSpecNumb.text!) ?? 0
} else if rowIndex == 3 {
txtFieldArray[section].lbl4 = Int(cell.txtFieldSpecNumb.text!) ?? 0
}
}
}
中的每个项目将代表每个部分,其中每个项目的txtFieldArray
,lbl1
lbl2
和lbl3
将代表相应的行
注意:在开始编辑文本字段之前,请确保lbl4
已初始化,并且每个部分都有一个条目。
UDPATE::根据注释中提供的信息,在将用户输入存储在txtFieldArray
中之后,您可以按以下方式预先填充txtFieldArray
>
finalSectionNumber
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。