From b5c7493140eb1f48e196884d88a2082741e3674f Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Thu, 2 Jun 2016 19:46:50 +0300 Subject: [PATCH] dynamic cells --- .../UserInterfaceState.xcuserstate | Bin 18062 -> 20594 bytes .../Controllers/MainController.swift | 52 ++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate b/Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate index b016cadf59844c2010e0917ab4e8bf123f58a10b..e78d368dbe66dfbbe53fc8b751489cae939ada4d 100644 GIT binary patch literal 20594 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 literal 18062 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

l&ihI7o!KAxecFLNX;n=EbDl5QF+c0THlj(Ddy> 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: CellItemable { + + let item: DataType + + init(item: DataType) { + self.item = item + } + + func configure(cell: UITableViewCell) { + (cell as? CellType)?.configure(item) + } +} + + +class BUILDER { + + var cellItems = [CellItemable]() + + init(cellItems: [CellItemable]) { + self.cellItems = cellItems + + } + + func configure(cell: UITableViewCell, itemIndex: Int) { + + let cellItem = cellItems[itemIndex] + + cellItem.configure(cell) + } +} + + class MainController: UIViewController { @IBOutlet weak var tableView: UITableView! { @@ -33,7 +70,22 @@ class MainController: UIViewController { let rows2 = TableRowBuilder(items: ["1", "1", "1", "1"]) + + + + let cellItem = CellItem(item: "1") + + let cellItem2 = CellItem(item: "1") + + let cellItem3 = CellItem(item: "1") + + + + + let b = BUILDER(cellItems: [cellItem, cellItem2, cellItem3]) + + rowBuilder .addAction(TableRowAction(type: .Click) { (data) in