gpt4 book ai didi

Swift JSON - 为文本和图像重用 TableView 单元格

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

我想做这样的事情,我希望我的每个 JSON 数据(来自 PHP)显示在表的每个单元格中。 JSON数据包括文本和图像。现在我只能显示文本,但无法提取图像。例如,我想在“新仪表详细信息”部分中显示图像,而我仍然可以在其他单元格中显示文本。 有什么方法可以重复使用文本和图像的表格 View 单元格吗?请提供建议。这是我的 JSON 数据,我已经将其更改为 swift 字典:

["cp_replacemeter": 1, "cp_current_l3": 3, "cp_voltage_l2": 2221, "cp_tktno": 3333, "ap_contact_no": 998, "cpremark": , "cp_voltage_l3": 2221, "cprefno": 17-0762, "cp_oldmeter_img": images/17-0762/222.jpg, "cpfaultyremark": , "co_id": 15, "cp_customer_signature": images/17-0762/17-0762-CustomerSign.jpg, "cp_meter_cover": Cover Broken, "error": 0, "cp_new_tariff": 1, "cp_service_type": CHANGE METER;, "cprtm_name": CONLOG, "cpi_no": 15670, "cp_meter_seal": Seals Broken, "cpcontact_no": 3331, "cpserviceremark": , "tag": search, "cptm_name": PRESSEY, "cplatitude": 3.12312, "cp_AddPhoto3": images/17-0762/other/17-0762-photo3.jpg, "cpt_of_meter": 3 Phase, "cplongitude": 110.86275, "cp_voltage_l1": 2221, "cp_AddPhoto2": images/17-0762/other/17-0762-photo2.jpg, "cp_AddPhoto5": images/17-0762/other/17-0762-photo5.jpg, "cpDistrict": KB, "cpc_name": 221, "cp_newmeter_img": images/17-0762/1.jpg, "cpaddress": 331, "cp_AddPhoto4": images/17-0762/other/17-0762-photo4.jpg, "cp_fault_type": METER HANG;, "cpr_tometer": 1 PHASE, "cp_old_tariff": 1, "cp_AddPhoto6": images/17-0762/other/17-0762-photo6.jpg, "cpic_no": 3331, "cp_current_l1": 1, "cp_AddPhoto1": images/17-0762/other/17-0762-photo1.jpg, "cpm_no": 222, "cp_current_l2": 2]

import UIKit

class MyTableViewController: UITableViewController {

struct Objects {
var sectionName : String!
var sectionObject : [String]!
}

var objectsArray = [Objects]()

override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight=UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100
LoadJsonData()
}

func LoadJsonData () {


let request = NSMutableURLRequest(url: NSURL(string:"http://<myphpaddress>appcpapi.php")! as URL)
request.httpMethod = "POST"

let poststring = "tag=search&refno=17-0762"

request.httpBody = poststring.data(using: String.Encoding.utf8)

let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in

if error != nil
{
print("error= \(error)")
return
}
else
{
do{
let dictionary = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : Any]

let ticket = dictionary["cp_tktno"] ?? "No data"
let name = dictionary["cpc_name"] ?? "No data"
let customerIC = dictionary["cpic_no"] ?? "No data"
let district = dictionary["cpDistrict"] ?? "No data"
let customercontact = dictionary["cpcontact_no"] ?? "No data"
let address = dictionary["cpaddress"] ?? "No data"
let latitudeGPS = dictionary["cplatitude"] ?? "No data"
let longitudeGPS = dictionary["cplongitude"] ?? "No data"
let om = dictionary["cpm_no"] ?? "No data"
let omtariff = dictionary["cp_old_tariff"] ?? "No data"
let ombrand = dictionary["cptm_name"] ?? "No data"
let omtype = dictionary["cpt_of_meter"] ?? "No data"
let omfaulty = dictionary["cp_fault_type"] ?? "No data"
let omseal = dictionary["cp_meter_seal"] ?? "No data"
let omcover = dictionary["cp_meter_cover"] ?? "No data"
let nm = dictionary["cp_replacemeter"] ?? "No data"
let nmtariff = dictionary["cp_new_tariff"] ?? "No data"
let nmbrand = dictionary["cprtm_name"] ?? "No data"
let nmtype = dictionary["cpr_tometer"] ?? "No data"
let nmservice = dictionary["cp_service_type"] ?? "No data"
let v1 = dictionary["cp_voltage_l1"] ?? "No data"
let v2 = dictionary["cp_voltage_l2"] ?? "No data"
let v3 = dictionary["cp_voltage_l2"] ?? "No data"
let a1 = dictionary["cp_current_l1"] ?? "No data"
let a2 = dictionary["cp_current_l2"] ?? "No data"
let a3 = dictionary["cp_current_l3"] ?? "No data"
let contractorID = dictionary["co_id"] ?? "No data"
let contractorcontact = dictionary["ap_contact_no"] ?? "No data"
let faultyremark = dictionary["cpfaultyremark"] ?? "No data"
let serviceremark = dictionary["cpserviceremark"] ?? "No data"

let newmeterimageurl = NSURL(string:"\(dictionary["cp_newmeter_img"]!)")!
let newmeterimagedata = NSData(contentsOf: newmeterimageurl as URL)
let MyWantedToShowImage = UIImage(data: newmeterimagedata! as Data)

DispatchQueue.main.async {
self.objectsArray = [MyTableViewController.Objects(sectionName: "Customer Details",
sectionObject:[
"Ticket No \n\(ticket)",
"Name \n\(name)",
"Customer Contact \n\(customercontact)",
"Customer IC \n\(customerIC)",
"Address \n\(address)",
"District:\n\(district)",
"Latitude GPS\n\(latitudeGPS)",
"Longitude GPS \n\(longitudeGPS)"]),
MyTableViewController.Objects(sectionName: "Old Meter Details",
sectionObject:[
"Old Meter Number \n\(om)",
"Old Meter Tariff \n\(omtariff)",
"Old Meter Brand \n \(ombrand)",
"Old Meter Type \n\(omtype)",
"Old Meter Faulty \n\(omfaulty)",
"Old Meter Seal \n\(omseal)",
"Old Meter Cover \n\(omcover)"]),
MyTableViewController.Objects(sectionName: "New Meter Details",
sectionObject:[
"New Meter Number \n\(nm)",
"New Meter Tariff \n\(nmtariff)",
"New Meter Brand \n\(nmbrand)",
"New Meter Type \n\(nmtype)",
"New Meter Service \n\(nmservice)",
"L1 Voltage \n\(v1)",
"L2 Voltage \n\(v2)",
"L3 Voltage \n\(v3)",
"L1 Ampere \n\(a1)",
"L2 Ampere \n\(a2)",
"L3 Ampere \n\(a3)",
"New Meter Image \n\(MyWantedToShowImages?.images)"]),
MyTableViewController.Objects(sectionName: "Customer Signature",
sectionObject:[
"Contrator ID \n\(contractorID)",
"Contractor Contact \n\(contractorcontact)",
"Faulty Remark \n\(faultyremark)",
"Service Remark \n\(serviceremark)"])]

self.tableView.reloadData()
}

}//Catch Error

catch let error{
print(error)
}
}

}
task.resume()

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}



override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return objectsArray[section].sectionObject.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as UITableViewCell!

cell?.textLabel?.numberOfLines = 0
cell?.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
cell?.textLabel?.text = objectsArray[indexPath.section].sectionObject[indexPath.row]
cell?.textLabel?.font = UIFont.systemFont(ofSize: 13, weight: 0.2)
return cell!
}

override func numberOfSections(in tableView: UITableView) -> Int{
return objectsArray.count
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?{

return objectsArray[section].sectionName
}


}

最佳答案

如果您想将文本与图像分开显示,那么您必须在 Storyboard中为图像设置另一个单元原型(prototype)。为其分配不同的单元格标识符,当您需要图像单元格时,使用新的单元格标识符创建它,类似于您在此处执行的操作:

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as UITableViewCell!

如果您希望在一个表格单元格中同时显示文本和图像,那么您只需修改现有原型(prototype)以容纳两者即可。如果您需要更多信息,请告诉我。

关于Swift JSON - 为文本和图像重用 TableView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990366/

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