У меня есть контроллер представления, который имеет placeholder
представление, у меня также есть пользовательский nib
, который я хочу добавить к этому placeHolderView.Я изо всех сил пытаюсь выяснить, как я собираюсь зарегистрировать перо в viewController так, чтобы, когда я нажимаю на этот контроллер представления, представление заполнителя заменяется моим пером.
Это то, что я пытался:
CountryViewController
import UIKit
class CountryViewController: UIViewController {
@IBOutlet weak var mainView: UIView!
@IBOutlet weak var flagImage: UIImageView!
@IBOutlet weak var countryInfoViewPlaceHolder: UIView!
private let countryDetails: CountryData
override func viewDidLoad() {
super.viewDidLoad()
setUpNavBar(countryName: countryDetails.name)
addSubView()
}
init(countryDetails: CountryData) {
self.countryDetails = countryDetails
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
return nil
}
func setUpNavBar(countryName: String) {
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
self.title = countryName
self.navigationController?.navigationBar.tintColor = UIColor.countryThemeGrey()
}
func addSubView() {
guard let nibView = Bundle.main.loadNibNamed("CountryDetailsView", owner: self, options: nil)?.first as? CountryDetailsView else {
return
}
countryInfoViewPlaceHolder.addSubview(nibView)
}
}
CountryDetailsView
class CountryDetailsView: UIView {
@IBOutlet weak var capitalLabel: UILabel!
@IBOutlet weak var regionLabel: UILabel!
@IBOutlet weak var subRegionLabel: UILabel!
convenience init() {
self.init(frame: .zero)
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
return nil
}
private func commonInit() {
// let nib = UINib(nibName: String(describing: type(of: self)), bundle: nil)
// contentView = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
// addSubviewPinnedToEdges(contentView)
Bundle(for: CountryDetailsView.self).loadNibNamed("CountryDetailsView", owner: self, options: nil)
}
func setViewWithData(country: CountryData) {
capitalLabel.text = country.capital
regionLabel.text = country.region
subRegionLabel.text = country.subRegion
}
}