Перейдите к View Controller из файла .xib swift - PullRequest
0 голосов
/ 01 мая 2020

У меня есть проблема. У меня есть .xib файл, который используется для рендеринга некоторых кнопок. Я хочу, чтобы при нажатии на каждую из этих кнопок она переходила на новый viewController. Мой логик c, который не работает для меня, и я не могу понять, что делать, поскольку этот макет .xib не встроен в UIViewController.

explore.xib

 import UIKit

    protocol ExploreDelegate:UIViewController {
        func categoryClicked(category: ProductCategory)
    }

    //enum Categories: String, CaseIterable {
    //
    //}


    class Explore: UIView {

        @IBOutlet weak var electronics: CategoryItem!
        @IBOutlet weak var mobilePhones: CategoryItem!
        @IBOutlet weak var travel: CategoryItem!
        @IBOutlet weak var womenFashion: CategoryItem!
        @IBOutlet weak var menFashion: CategoryItem!
        @IBOutlet weak var health: CategoryItem!
        @IBOutlet weak var arts: CategoryItem!
        @IBOutlet weak var babies: CategoryItem!
        @IBOutlet weak var rentals: CategoryItem!
        @IBOutlet weak var realEstate: CategoryItem!
        @IBOutlet weak var agriculture: CategoryItem!
        @IBOutlet weak var jobs: CategoryItem!
        @IBOutlet weak var everything: CategoryItem!


        var categoriesView: UIView!
        var titleLabel: UILabel!
        var delegate: ExploreDelegate?

        override init(frame: CGRect) {
            super.init(frame: frame)
            self.setup()
        }

        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            self.setup()
        }

        func configure() {
            let categoryButtons = [electronics, mobilePhones, travel, womenFashion, menFashion, health, arts, babies, rentals, realEstate, agriculture, jobs, everything]
            let categories: [ProductCategory] = ProductCategory.allCases
            categoryButtons.enumerated().forEach({
                $0.element?.category = categories[$0.offset]
            })        
            self.layoutIfNeeded()
        }
    }

    class CategoryItem: UIView {

        var category: ProductCategory? {
            didSet {
                self.configure()
            }
        }
        var tapped: ((_ category: ProductCategory?) -> Void)?

        func configure() {
            self.layer.cornerRadius = 6
            self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.categoryTapped)))
            self.layoutIfNeeded()
        }

        @objc func categoryTapped(_ sender: UIGestureRecognizer) {
//here i want to navigate to new view controller but not working
            let newViewController = ProductLocationViewController()
            self.navigationController?.pushViewController(newViewController, animated: true)
            self.tapped?(self.category)
        }
    }

Ошибка

value of type 'CategoryItem' has no member 'navigationController'

Пожалуйста, полезные идеи будут высоко оценены ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...