GBA003/Delta/Components/Popover Menu/PopoverMenuViewController.swift
2024-05-30 10:22:15 +08:00

69 lines
1.8 KiB
Swift

//
// PopoverMenuViewController.swift
// Delta
//
// Created by Riley Testut on 9/2/17.
// Copyright © 2017 Riley Testut. All rights reserved.
//
import UIKit
import Roxas
class ListMenuViewController: UITableViewController
{
var items: [MenuItem] {
get { return self.dataSource.items }
set { self.dataSource.items = newValue; }
}
fileprivate let dataSource = RSTArrayTableViewDataSource<MenuItem>(items: [])
override var preferredContentSize: CGSize {
get {
let navigationBarHeight = self.navigationController?.navigationBar.bounds.height ?? 0.0
return CGSize(width: 0, height: (self.tableView.rowHeight * CGFloat(self.items.count)) + navigationBarHeight)
}
set {}
}
init()
{
super.init(style: .plain)
self.dataSource.cellConfigurationHandler = { (cell, item, indexPath) in
cell.textLabel?.text = item.text
cell.accessoryType = item.isSelected ? .checkmark : .none
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad()
{
super.viewDidLoad()
self.tableView.dataSource = self.dataSource
self.tableView.rowHeight = 44
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: RSTCellContentGenericCellIdentifier)
}
}
extension ListMenuViewController
{
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
self.items.forEach { $0.isSelected = false }
let item = self.dataSource.item(at: indexPath)
item.isSelected = true
item.action(item)
self.tableView.reloadData()
self.dismiss(animated: true, completion: nil)
}
}