support cell type: detailDesclosure
This commit is contained in:
parent
6411645568
commit
fca0b50990
3 changed files with 21 additions and 5 deletions
|
|
@ -13,7 +13,7 @@ enum CellDataType {
|
|||
}
|
||||
|
||||
enum CellDataKey {
|
||||
case type, title, link, footer
|
||||
case type, title, link, footer, accessoryType, detailDisclosureAction, detailDisclosureData
|
||||
}
|
||||
|
||||
class BasicStaticTableViewController: UITableViewController {
|
||||
|
|
@ -42,10 +42,20 @@ class BasicStaticTableViewController: UITableViewController {
|
|||
let cell = UITableViewCell()
|
||||
let cellData = tableData[indexPath.section][indexPath.row]
|
||||
cell.textLabel?.text = cellData[CellDataKey.title] as? String
|
||||
cell.accessoryType = .disclosureIndicator
|
||||
if let accessoryType = cellData[CellDataKey.accessoryType] as? UITableViewCellAccessoryType {
|
||||
cell.accessoryType = accessoryType
|
||||
} else {
|
||||
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
|
||||
}
|
||||
return cell
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
|
||||
let cellData = tableData[indexPath.section][indexPath.row]
|
||||
let selector = cellData[CellDataKey.detailDisclosureAction] as? Selector
|
||||
perform(selector, with: cellData[CellDataKey.detailDisclosureData])
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
let cellData = tableData[indexPath.section][indexPath.row]
|
||||
|
|
|
|||
|
|
@ -31,11 +31,17 @@ class OpenSourceComponentsTableViewController: BasicStaticTableViewController {
|
|||
tableData.append([])
|
||||
for item in openSourceComponents {
|
||||
tableData[0].append(
|
||||
[CellDataKey.type: CellDataType.link, CellDataKey.title: item[0], CellDataKey.link: item[1]]
|
||||
[CellDataKey.type: CellDataType.link, CellDataKey.title: item[0], CellDataKey.link: item[1], CellDataKey.accessoryType: UITableViewCellAccessoryType.detailDisclosureButton, CellDataKey.detailDisclosureAction: #selector(actOnDetailDisclosureButton(_:)), CellDataKey.detailDisclosureData: item[2]]
|
||||
)
|
||||
}
|
||||
navigationItemTitle = "Open Source Components"
|
||||
super.viewDidLoad()
|
||||
}
|
||||
|
||||
func actOnDetailDisclosureButton(_ sender: Any?) {
|
||||
if let link = sender as? String {
|
||||
UIApplication.shared.open(URL(string: link)!, options: [:], completionHandler: nil)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue