【发布时间】:2019-12-02 08:17:44
【问题描述】:
我正在尝试为选择项实现委托方法。我在更新 tableView 单元格时感到困惑。由于我有多个部分,因此列表将用于不同的单元格。如何更新我的 tableview 单元格行或模型以便重新加载 tableView?
型号:
struct Unit : Codable {
let sectionList : [SectionList]?
}
struct SectionList : Codable {
let title : String?
let items : [Item]?
}
struct Item : Codable {
let actionType : Int?
let actionUrl : String?
let bgColor : String?
let booleanValue : Bool?
let textField : String?
let textValue : String?
let unitId : Int?
let latitude : Double?
let longitude : Double?
let actionParamData: String?
let actionTitle: String?
let pickList: [SectionList]?
let multiSelect: Bool?
let selectedValue: [String]?
let version: Int?
let masterId: Int?
let itemValue: String?
}
FirstViewController:
var AppData: Unit?
func listFunc(tvc2: ViewController, didSelectList listValue: String) {
print(listValue)
let indexPathRow:Int = 0
let indexPosition = IndexPath(row: indexPathRow, section: 0)
tableView.reloadRows(at: [indexPosition], with: .none)
}
SecondViewController:(包含列表)
protocol ListDelegate {
func listFunc(tvc2: ViewController, didSelectList listValue: String)
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRow(at: indexPath!)!
//print(currentCell.textLabel?.text as Any)
currentCell.accessoryType = .checkmark
delegate?.listFunc(tvc2: self, didSelectList: currentCell.textLabel?.text ?? "")
let vc = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController
self.navigationController?.pushViewController(vc, animated: true)
}
【问题讨论】:
-
你在哪里将第一个视图控制器设置为第二个的代理?为什么总是重新加载第 0 行?
-
@Paulw11 在
secondViewController中设置委托。var delegate: ListDelegate? -
@Paulw11 实际的简单扫描仪是我必须从
secondViewController中选择任何项目并希望在FirstViewController中设置。一旦项目选择它刷新单元格。 -
这就是您对委托进行处理的地方,但您需要将您的第一个视图控制器的实例设置为该属性的某个地方
-
@Paulw11 我真的很陌生,对如何设置感到困惑?我可以将我的
github链接分享给您吗?
标签: ios swift uitableview appdelegate