gpt4 book ai didi

ios - 在tableview中插入和删除单元格,将文本字段放入单元格中,然后将文本字段数据放入swift中的json原始参数中

转载 作者:行者123 更新时间:2023-11-30 11:02:36 26 4
gpt4 key购买 nike

description image

description image

我的目标是使用“添加更多”按钮重复底部页面的 View

在数据插入结束时,当用户按下“提交”按钮时。我需要读取所有重复的表单并将其作为 JSONArray 发送到 API。

我的问题是我无法保持数据一致。例如。如果我放置三个表格并填写数据,然后添加更多表格。一旦我跨越一定数量的表单,现有表单就会更改其原始位置,新表单占据顶部的第二个位置,其余单元格会重新排列。

我希望细胞在整个过程中保持其原始位置。无论用户做什么,它都不应该改变。

我还想在按下“提交”按钮时读取所有数据。

请帮忙!!

这是我的 JSON 原始数据

{
"participants":[

{
"name":"Ram",
"mobile_no":"912368790",
"events":[6,7,8,9,10],
"gender":"male",
"whatsapp_no":"912368790"
},

{
"name":"Sham",
"mobile_no":"9909123456",
"events":[9,10],
"gender":"male",
"whatsapp_no":"9909123456"
}

]
}

我是 swift 新手,谁能帮助我如何在 swift 中处理 tableview 数据和 JSON 原始数据

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

@IBOutlet weak var addmore: UIButton!
var ar = ["Individual 1"]

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ar.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableview.dequeueReusableCell(withIdentifier: "cell") as! TableTVC
cell.indivuallbl.text! = ar[indexPath.row]
return cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 240.5
}

按钮操作

@IBAction func deleterow(_ sender: Any) {

let point = (sender as AnyObject).convert(CGPoint.zero, to: tableview)
guard let indexPath = tableview.indexPathForRow(at: point) else {
return
}
ar.remove(at: indexPath.row)
print(ar.count)

tableview.deleteRows(at: [indexPath], with: .automatic)
self.perform(#selector(reloadTable), with: nil, afterDelay: 0)


}

@objc func reloadTable() {
DispatchQueue.main.async {
self.tableview.reloadData()
}
}

@IBOutlet weak var tableview: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

tableview.tableHeaderView = UIView.init(frame: .zero)

}

@IBAction func addmore(_ sender: Any) {


ar.insert("Individual \(ar.count + 1 )", at: 0)
print(ar.count)
tableview.insertRows(at: [IndexPath(row: 0 , section: 0)], with: .automatic)

}

@IBAction func submitBtn(_ sender: Any) {

NotificationCenter.default.post(name: .data, object: nil)

}





Uitableviewcell

TableTVC 类:UITableViewCell {

@IBOutlet weak var whatsappnotxt: UITextField!
@IBOutlet weak var phonenotxt: UITextField!
@IBOutlet weak var nametxt: UITextField!
@IBOutlet weak var gendropDowntx: HADropDown!
@IBOutlet weak var indivuallbl: UILabel!



override func awakeFromNib() {
super.awakeFromNib()
NotificationCenter.default.addObserver(self, selector:
#selector(datatable(notification:)), name: .data, object: nil

}




@objc func datatable(notification: Notification){




let pP: [String: Any ] =
[

"participants":[

[

nametxt.text = "\(nametxt!)",
whatsappnotxt.text! = "\(whatsappnotxt!)",
phonenotxt.text! = "\(phonenotxt!)"



]
]


]

let headers: HTTPHeaders = [
"Authorization": "Bearer\(token)",
"Accept": "application/json"
]


Alamofire.request("http://api.domain.com/individual/add", method: .post, parameters: pP, encoding: JSONEncoding.default,headers: headers)
.responseJSON { response in
print(response)

}

}

}

扩展通知.名称{

static let data = Notification.Name("data")

}

如何正确显示数据?

最佳答案

从 Alamofire 下载 JSON 数据后,您应该将其解码为值类型,例如结构体。

定义结构,

struct Participants: Decodable{
var participants: [Participant]
}

struct Participant: Decodable{

var name: String
var mobile_no: String
var events: [Int]
var gender: String
var whatsapp_no: String
}

解码数据

var trackList: TrackList = JSONDecoder().decode(TrackList.self. init(from: response))

关于ios - 在tableview中插入和删除单元格,将文本字段放入单元格中,然后将文本字段数据放入swift中的json原始参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53150073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com