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

标签 ios swift

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/

相关文章:

ios - 在加载 UIView 之前显示 UIActivityIndi​​catorView

ios - ios7后台下载文件,弹出 View 然后推送,无法更新UI

iphone - 监控应用程序使用情况

ios - 将字符串设置为可选值的问题

IOS,如何在包含不同 subview 的 UITableViewCell 中设置自动布局

objective-c - 为什么应用程序崩溃而没有在控制台中打印任何内容?

ios - 在 Swift 2.1 中查找数组中的对象

swift - 是否可以使用 AutoLayout 在运行时使纵横比为 1 :1 based on the largest of either Screen Height or Screen width,?

ios - 详细 View Controller 中的 Segue 错误

swift - 从 swift/firebase 闭包内部修改变量