【发布时间】:2018-09-18 09:34:49
【问题描述】:
在这张照片中,您可以看到用户可以打开或关闭每个单元格的开关。最后,当用户按下按钮时,我需要将选定的单元格(打开开关的单元格)添加到数组中以将其发送到 API。
当用户点击按钮(在屏幕底部)时,我应该得到 unitNo 和 personId 并将它们存储在我的结构中
我的模特:
struct Itemm : Codable {
var unitNo:Int?
var personId:Int?
}
struct welcome {
var items : [Itemm?]
}
我必须发送如下数组:
{
"items": [
{
"unitNo": 0,
"personId": 0
}
]
}
我对如何使用 if 语句访问 UIButton 中的单元格数据然后存储它们感到有些困惑。如果有任何帮助,我将不胜感激。
表格视图:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SmsCell") as? SmsTableViewCell
cell?.PhonNumberLbl.text = data![indexPath.section].contacts[indexPath.row]?.phoneNumber
cell?.NameLbl.text = data![indexPath.section].contacts[indexPath.row]?.name
cell?.selectedTF.isOn = (data![indexPath.section].contacts[indexPath.row]?.selected)!
return cell!
}
API 响应:
[
{
"contacts": [
{
"id": 9827,
"selected": true,
"phoneNumber": "09203137745",
"name": "owner"
},
{
"id": 10159,
"selected": true,
"phoneNumber": "08523698522",
"name": "hff"
},
{
"id": 10161,
"selected": true,
"phoneNumber": "09586731218",
"name": "hjdldue"
}
],
"unitNo": 1,
"unitPlaque": "jack",
"billText": "texttext"
},
{
"contacts": [
{
"id": 10145,
"selected": true,
"phoneNumber": "09123809556",
"name": "mmm"
},
{
"id": 10160,
"selected": true,
"phoneNumber": "85233366888",
"name": "ttt"
}
],
"unitNo": 2,
"unitPlaque": "mm",
"billText": "texttext"
}
]
我想我没有清楚地解释我在寻找什么。
我调用的第一个方法是GET 方法,它提供了我在表格中呈现的数据。用户只能更改开关,用户可以根据需要更改多次,直到他/她按下按钮(在屏幕底部)。
按下按钮时,我需要获取每个单元格后面的隐藏数据并将它们存储在我的结构中并将其发送到具有另一种方法的 API。当用户按下按钮时,我需要从打开了开关的单元格中提取 2 个属性。
Presenter 表示:
func sendSmsForAllTheMembers(AptId:String , data:[String:Int])
{
ApiGenerator.request(targetApi: ApartemanService.sendSms(aptId: AptId, data: data), responseModel: Nil.self, success: { (response) in
if response.response.statusCode == 200 {
self.view?.SendingSmsSuccess()
}else {
do{
var errorMessage = try response.response.mapString()
errorMessage = errorMessage.replacingOccurrences(of: "\"", with: "",
options: NSString.CompareOptions.literal, range:nil)
self.view?.SendingSmsFailed(errorMessage: errorMessage)
}catch let error{
print(error)
self.view?.SendingSmsFailed(errorMessage: "error")
}
}
}) { (error) in
self.view?.SendingSmsFailed(errorMessage: "error")
}
}
【问题讨论】:
-
您能否提供有关如何制作开关的代码?
-
进行开关是什么意思?我从 API 收到一些数据,它有一个选定的变量,如果该选定的变量为真,那么开关将打开
-
啊哈,如果数据被选中,你需要打开开关吗?
-
好的,您能否提供有关如何填充 tableView 中的单元格的代码?以及来自 API 的数据对象?
-
附注。字体有点太小,navBar 中文本的颜色与其背景没有很好的对比。 Che bamazze neveshti 'Ethan Hunt' ro :D
标签: ios swift uitableview