【发布时间】:2018-01-19 21:36:02
【问题描述】:
我正在尝试实现 Koloda 刷卡方式。我创建了一个结构为 Image 1 & 2 的 .xib 文件。
如图 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 设置为子视图而不是自定义类。
任何帮助表示赞赏。
【问题讨论】:
-
既然您的目标是获得
CardView,为什么还要让koloda方法返回UIView? -
第一件事我猜 CardView 是 XIB 视图。并且 setUp() 不能显式调用,因为新的 CardView 将被添加到自身上(视图初始化时递归)。并且猜测您想要从 xib 到视图控制器本身的标签出口,您必须将文件所有者更改为您想要出口的视图控制器。
-
@snjmhj 没错。我相信插座必须添加到 CardView 类而不是 ViewController。