我正在嘗試實現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設置爲子視圖而不是自定義類。
任何幫助表示讚賞。
爲什麼你讓'koloda'方法返回一個'UIView',因爲你的目標是得到'CardView'? –
我首先猜測CardView是XIB視圖。並且不能顯式調用setUp(),因爲新的CardView將自身添加(視圖初始化遞歸)。並且猜測你希望從xib到視圖控制器本身的標籤出口,你必須將文件所有者改變到你想要出口的視圖控制器。 – snjmhj
@snjmhj這是正確的。我相信網點必須添加到CardView類而不是ViewController。 –