Выдвижная панель с подкатегориями в быстром темпе - PullRequest
0 голосов
/ 03 августа 2020

В виде таблицы есть несколько строк. Каждая строка открывает новый вид. Теперь я хочу показать несколько подкатегорий при нажатии на конкретную строку. каждая из этой подкатегории открывает разные представления. Я использую только 1 раздел. Есть идеи?

1 Ответ

0 голосов
/ 03 августа 2020

Просто сделайте это.

class CategoriesListViewController: UIViewController {

@IBOutlet weak var tableView: UITableView!
var filterCategories = [CategoryViewModel]()
override func viewDidLoad() {
    super.viewDidLoad()        
    tfSearch.placeholder = LocalizeKey.search.localized        
    getCategories()
    // Do any additional setup after loading the view.
}

extension CategoriesListViewController : UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return filterCategories.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CategoryCellTableView
    let category = filterCategories[indexPath.row]
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
    if let controller : SubCategoriesListViewController = ViewControllerManager.shared.find() {
        controller.selectedCategory = self.filterCategories[indexPath.row]
        self.pushViewController(controller : controller)
    }
}

Подкатегории будут наследоваться от основных категорий и переопределить методы выбора табличного представления и делать все, что вы хотите.

class SubCategoriesListViewController: CategoriesListViewController {

@IBOutlet weak var tableView: UITableView!
var filterCategories = [CategoryViewModel]()
override func viewDidLoad() {
    super.viewDidLoad()        
    // Do any additional setup after loading the view.
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let controller = DifferentViewController()
    self.pushViewController(controller : controller)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...