我正在创建一个XIB文件,该文件在应用时将视图设置为$autoload['libraries'] = array('database','session','upload','form_validation','pagination');
。您可能已经猜到了,我无法将GADBannerView
文件本身的rootViewController
属性设置为self
,因此导致我创建一个AdXib
那里的属性-但您无法在IBInspectable
中设置UIViewController
。我也无法通过字符串强制转换解决问题,所以:
有人可以帮助我正确地投射字符串或提出设置IBInspectable
属性的更好方法吗?
谢谢
AdXib文件(为清楚起见,我省略了大部分广告加载过程):
rootViewController
当将IBInspectable属性设置为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)
}
}
时,代码可以很好地编译,但是由于无法使用该类型(https://medium.com/anantha-krishnan-k-g/ibdesignable-and-ibinspectable-in-swift-3-702d7dd00ca),因此代码未显示在界面生成器中。我决定尝试使用UIViewController
,但不知道如何将其设置为String
类型。有人可以建议我尝试做的方法还是建议其他方法?