我寫,可以展開/摺疊自定義表頭的看法,我寫了一個協議,因爲它象下面這樣:如何正確設置協調類中的屬性?
protocol ExpandableHeadViewDelegate{
var expandStateReference : [String : Bool] { get set }
var tblVw : UITableView { get set }
func didTapActionFromHeadVw(_ view: ExpandableHeadView, tag: Int)
}
這裏是我的膨脹頭部視圖類,什麼我試着去實現時,這種觀點是被螺孔我就能打電話,我從那裏expandableView嵌入的UITableView需要的方法:
class ExpandableHeadView: UIView {
var delegate : ExpandableHeadViewDelegate?
//set up tap recognizer
.
.
.
.
private func viewTapped {
if let delegate = delegate {
delegate.tblVw.reloadData()
}
}
}
我的ViewController利用這個類是如下:
class PlayersViewController: UIViewController,UITableViewDelegate,
UITableViewDataSource, ExpandableHeadViewDelegate {
var expandedCells = [String : Bool]() //
@IBOutlet var tableVw: UITableView! // compile time error
}
我現在面臨的問題是,即使我宣佈我的「無功tableVw」在我的委託類,Xcode中給我一個錯誤:
Protocol requires property 'tableVw' with type 'UITableView'; do you want to add stub?
設置var expandedCells ..
但是設置正確。如果我將我的tableVw設置爲非IBOutlet,它可以編譯,但我希望我的tableVw成爲IBOutlet屬性。
編輯: 添加一個stub變量爲tableVw和分配我的tableView IBOutlet它的作品。在協議中的財產申報爲UITableView!
- 但我還在好奇這是否可以不使用可變
internal var tableVw: UITableView?
@IBOutlet var tableView: UITableView!
.
.
func viewDidload {
self.tableVw = self.tableView
}