Как можно реализовать UITableViewDataSource в виде протокола, на который можно подписать другой класс? Дело в том, что у меня на одном View Controller находится 3 UITableView, которые получают данные от разных классов.
import UIKit
class MainViewController: UIViewController, UITableViewDataSource,
AddCableDelegate, AddLoadDelegate, AddReleDelegate {
@IBOutlet var VoltageTextField : UITextField!
@IBOutlet var CurrentTextField : UITextField!
@IBOutlet var KoTextField : UITextField!
@IBOutlet var CableTable: UITableView!
@IBOutlet var LoadTable: UITableView!
@IBOutlet var ReleTable: UITableView!
let IndentifierOfCabel = "CableCellIdentifier"
let IndetifierOfLoad = "LoadCellIdentifier"
let IndentifierOfRele = "ReleCellIdentifier"
var cables = [Cable] ()
var loads = [Load] ()
var reles = [Rele] ()
override func viewDidLoad() {
super.viewDidLoad()
}
func sendDataCable(_ sendCable: AddCableViewController, didAddCable cable: Cable) {
cables.append(cable)
CableTable.reloadData()
}
func sendLoad(_ addLoadViewController: AddLoadViewController, didAddLoad load: Load) {
loads.append(load)
LoadTable.reloadData()
}
func sendRele(_ addReleViewController: AddReleViewController, didAddRele rele: Rele) {
reles.append(rele)
ReleTable.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return cables.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let CellOfCabel = tableView.dequeueReusableCell(withIdentifier: IndentifierOfCabel, for: indexPath)
let cable = cables[indexPath.row]
CellOfCabel.textLabel?.text = cable.NameOfCable
CellOfCabel.detailTextLabel?.text = cable.LengthOfCable
return CellOfCabel
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let navigationControllerOfCable = segue.destination as! UINavigationController
let addCableViewController = navigationControllerOfCable.topViewController as! AddCableViewController
addCableViewController.delegateCable = self
}
}