无法将IBOutlet连接到XIB文件
我正在尝试实现Koloda卡片滑动样式。我创建了一个.xib文件,结构如图1 & 2. 无法将IBOutlet连接到XIB文件
正如您在Image 1中看到的那样,我已将File's Owner设置为XIB Files自定义类。
在图像2,我已经离开了类空(不知道这是正确的)
我的NIB类是按下面的代码。
import UIKit
import Koloda
class CardView: KolodaView {
var view: UIView!
var nibName: String = "CardView"
var uid: String!
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setUp()
}
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
func setUp() {
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.isUserInteractionEnabled = true
addSubview(view)
}
func loadViewFromNib() -> UIView {
let bundle = Bundle(for: CardView.self)
let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
return view
}
}
在我的控制器中,我有以下的索引视图;
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
_ = userResults[Int(index)]
let bundle = Bundle(for: CardView.self)
let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
return view
}
我无法插入我的IBOutlets并将它们引用到我的UIViewController中。因为我将获得geoFire & FirDatabase信息并填充视图。我知道这与文件所有者有关。我只是不确定如何将IBOutlets设置为子视图而不是自定义类。
任何帮助表示赞赏。
。
-
Class is now;
import UIKit class CardView: UIView { var uid: String! @IBOutlet weak var profileImage: UIImageView! @IBOutlet weak var nameLabel: UILabel! }
删除文件所有者
- CardView在厦门国际银行现在设置为CardView
-
viewForCardAt是现在;
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView { let bundle = Bundle(for: CardView.self) let nib = UINib(nibName: String(describing: CardView.self), bundle: bundle) let view = nib.instantiate(withOwner: self, options: nil)[0] as! CardView let users = userResults[Int(index)] view.profileImage.sd_setImage(with: URL(string: users.userProfileURL)) view.nameLabel.text = users.userName view.uid = users.uid return view
}
我现在有一个工作 “火种卡与大地定位” :)
尝试摆弄周围小时后最后CardView类设置为自定义类CardView而不是UIView的
如果我改变loadViewFromNib - 让view = nib.instantiate(withOwner:self,options:nil)[0] as! UIView让view = nib.instantiate(withOwner:self,options:nil)[0] as! CardView和相同的 - viewForCardAtIndex我得到错误(无法转换'UIView'类型的值) –
为什么你让'koloda'方法返回一个'UIView',因为你的目标是得到'CardView'? –
我首先猜测CardView是XIB视图。并且不能显式调用setUp(),因为新的CardView将自身添加(视图初始化递归)。并且猜测你希望从xib到视图控制器本身的标签出口,你必须将文件所有者改变到你想要出口的视图控制器。 – snjmhj
@snjmhj这是正确的。我相信网点必须添加到CardView类而不是ViewController。 –