Я создаю XIB-файл, который, когда он применяется, задает для представления значение GADBannerView
.Как вы уже догадались, я не могу установить для свойства rootViewController
значение self
для самого файла AdXib
, поэтому я вынужден создать IBInspectable
, чтобы просто установить свойство там - но вы можетене установите UIViewController
в IBInspectable
.Я не мог понять это и с помощью приведения строк, поэтому:
Может кто-нибудь помочь мне правильно привести строки или предложить лучший способ установить свойство rootViewController
?
Спасибо
Файл AdXib (для ясности я пропустил большую часть процесса загрузки рекламы):
import UIKit
import GoogleMobileAds
class AdXib: UIView, GADBannerViewDelegate {
@IBOutlet var contentView: UIView!
@IBOutlet var bannerView: GADBannerView!
var viewcontrollerThatIsSelfForGADBannerView: UIViewController
@IBInspectable var rootViewController: UIViewController {
didSet {
viewcontrollerThatIsSelfForGADBannerView = self.rootViewController
}
}
//tried but couldn't figure out how to set a string as a uiview controller...
@IBInspectable var rootViewController: String {
didSet {
viewcontrollerThatIsSelfForGADBannerView = "\(self.rootViewController)"
}
}
override init(frame: CGRect) {
super.init(frame: frame)
initializeView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initializeView()
}
private func initializeView(){
Bundle.main.loadNibNamed("AdXib", owner: self, options: nil)
addSubview(contentView)
//bannerView.rootViewController = self <--- error
bannerView.rootViewController = viewcontrollerThatIsSelfForGADBannerView
bannerView.load(request)
}
}
При установке свойства IBInspectable в качестве UIViewController
, код скомпилирован нормально, но не отображаетсяв конструкторе интерфейсов, так как вы не можете использовать этот тип (https://medium.com/anantha-krishnan-k-g/ibdesignable-and-ibinspectable-in-swift-3-702d7dd00ca). Я решил попробовать использовать String
, но не мог понять, как установить его как тип UIViewController
. Может кто-то предложитьисправить способ, которым я пытался это сделать, или предложить другой путь?