forked from shadowfacts/Tusker
126 lines
4.3 KiB
Swift
126 lines
4.3 KiB
Swift
|
//
|
||
|
// StatusActionAccountListTableViewController.swift
|
||
|
// Tusker
|
||
|
//
|
||
|
// Created by Shadowfacts on 9/5/19.
|
||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import UIKit
|
||
|
|
||
|
class StatusActionAccountListTableViewController: UITableViewController {
|
||
|
|
||
|
private let statusCell = "statusCell"
|
||
|
private let accountCell = "accountCell"
|
||
|
|
||
|
let statusID: String
|
||
|
let accountIDs: [String]
|
||
|
|
||
|
init(statusID: String, accountIDs: [String]) {
|
||
|
self.statusID = statusID
|
||
|
self.accountIDs = accountIDs
|
||
|
|
||
|
super.init(nibName: "StatusActionAccountListTableViewController", bundle: .main)
|
||
|
}
|
||
|
|
||
|
required init?(coder: NSCoder) {
|
||
|
fatalError("init(coder:) has not been implemented")
|
||
|
}
|
||
|
|
||
|
override func viewDidLoad() {
|
||
|
super.viewDidLoad()
|
||
|
|
||
|
tableView.register(UINib(nibName: "StatusTableViewCell", bundle: .main), forCellReuseIdentifier: statusCell)
|
||
|
tableView.register(UINib(nibName: "AccountTableViewCell", bundle: .main), forCellReuseIdentifier: accountCell)
|
||
|
|
||
|
tableView.rowHeight = UITableView.automaticDimension
|
||
|
tableView.estimatedRowHeight = 66 // height of account cell, which will be the most common
|
||
|
|
||
|
tableView.alwaysBounceVertical = true
|
||
|
|
||
|
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNormalMagnitude))
|
||
|
}
|
||
|
|
||
|
// MARK: - Table view data source
|
||
|
|
||
|
override func numberOfSections(in tableView: UITableView) -> Int {
|
||
|
return 2
|
||
|
}
|
||
|
|
||
|
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||
|
switch section {
|
||
|
case 0: // status
|
||
|
return 1
|
||
|
case 1: // accounts
|
||
|
return accountIDs.count
|
||
|
default:
|
||
|
fatalError("Invalid section \(section)")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||
|
switch indexPath.section {
|
||
|
case 0:
|
||
|
guard let cell = tableView.dequeueReusableCell(withIdentifier: statusCell, for: indexPath) as? StatusTableViewCell else { fatalError() }
|
||
|
cell.updateUI(statusID: statusID)
|
||
|
cell.delegate = self
|
||
|
return cell
|
||
|
case 1:
|
||
|
guard let cell = tableView.dequeueReusableCell(withIdentifier: accountCell, for: indexPath) as? AccountTableViewCell else { fatalError() }
|
||
|
cell.updateUI(accountID: accountIDs[indexPath.row])
|
||
|
cell.delegate = self
|
||
|
return cell
|
||
|
default:
|
||
|
fatalError("Invalid section \(indexPath.section)")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
// Override to support conditional editing of the table view.
|
||
|
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
|
||
|
// Return false if you do not want the specified item to be editable.
|
||
|
return true
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
// Override to support editing the table view.
|
||
|
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
|
||
|
if editingStyle == .delete {
|
||
|
// Delete the row from the data source
|
||
|
tableView.deleteRows(at: [indexPath], with: .fade)
|
||
|
} else if editingStyle == .insert {
|
||
|
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
|
||
|
}
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
// Override to support rearranging the table view.
|
||
|
override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
|
||
|
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
// Override to support conditional rearranging of the table view.
|
||
|
override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
|
||
|
// Return false if you do not want the item to be re-orderable.
|
||
|
return true
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
// MARK: - Navigation
|
||
|
|
||
|
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||
|
// Get the new view controller using segue.destination.
|
||
|
// Pass the selected object to the new view controller.
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
}
|
||
|
|
||
|
extension StatusActionAccountListTableViewController: StatusTableViewCellDelegate {}
|