微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何快速将所有文本字段值带到临时数组

如何解决如何快速将所有文本字段值带到临时数组

我在Swift中还很陌生。 因此,我根据用户输入创建了多个部分,然后我希望从文本字段中获取所有数据。 1个部分包含4行(4个文本字段)。 接下来,我想对每个部分的数据进行处理。

应用程序的外观如下:

enter image description here

现在,正如我之前提到的,节的数量可以根据用户请求而有所不同。 在这里,我创建了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的子类),但是它属于基于观点的 。要回答您的特定问题,建议您删除IndexPathrow1row2row3,因为它们是多余的(您已经有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 } } } 中的每个项目将代表每个部分,其中每个项目的txtFieldArraylbl1 lbl2lbl3将代表相应的行

注意:在开始编辑文本字段之前,请确保lbl4已初始化,并且每个部分都有一个条目。

UDPATE::根据注释中提供的信息,在将用户输入存储在txtFieldArray中之后,您可以按以下方式预先填充txtFieldArray >

finalSectionNumber

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。