У меня есть проблема. У меня есть .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'
Пожалуйста, полезные идеи будут высоко оценены ,