【发布时间】:2019-11-21 23:36:49
【问题描述】:
我的问题很简单。我想要的只是在没有情节提要的情况下以编程方式设置UITableView。
我创建了我的TableView,效果很好。问题是UITableViewCell。它应该只包含一个UILabel,但我不知道如何在类中初始化它。我看过的关于UITableViews 的所有教程都是在Storyboard 内完成的。. 至少是设置。
我是新手,我知道这可能非常简单,但我找不到解决问题的方法。我很感激每一个帮助!
import UIKit
class WhishCell: UITableViewCell {
var whishText: String
init(whishText: String){
self.whishText = whishText
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
更新
这就是我在UIViewController 中设置UITableView 的方式:
let theTableView: WhishlistTableViewController = {
let v = WhishlistTableViewController()
v.view.layer.masksToBounds = true
v.view.layer.borderColor = UIColor.white.cgColor
v.view.layer.borderWidth = 2.0
v.view.translatesAutoresizingMaskIntoConstraints = false
return v
}()
然后我也 activate 它就像我的 UIViewController 中的其余项目一样:
// constrain tableView
theTableView.view.topAnchor.constraint(equalTo: wishlistView.topAnchor, constant: 180.0),
theTableView.view.bottomAnchor.constraint(equalTo: wishlistView.bottomAnchor, constant: 0),
theTableView.view.leadingAnchor.constraint(equalTo: wishlistView.safeAreaLayoutGuide.leadingAnchor, constant: 30.0),
theTableView.view.trailingAnchor.constraint(equalTo: wishlistView.safeAreaLayoutGuide.trailingAnchor, constant: -30.0),
TableView 位于UIView 内,如果用户点击button,我会让它出现:
cell.wishlistTapCallback = {
// let wishlistView appear
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseIn, animations: {
self.wishlistView.transform = CGAffineTransform(translationX: 0, y: 0)
})}
【问题讨论】:
-
let cell = tableView.dequeueReusableCell(withIdentifier: "whishCell") as! WhishCell -
对不起,你是什么意思?我没有在 Storyboard 中做任何事情
-
@Sh_Khan 明白了。现在它说我需要在
super.init中初始化self.whishText。但是我该怎么做呢? -
您需要将模型与视图分开。单元格不应具有其呈现的数据的属性。使用用于向单元格提供数据的模型。如果有必要,单元格可以有一个名为 wishTextLabel 的 UILabel,但不是字符串实例本身。请参阅下面的示例。
标签: ios swift uitableview initialization