我是编程新手,目前正在从事类似应用程序的新闻提要。我有一个正常的Table视图并且运行良好,但现在想尝试使用模拟单元格类型。因此,我创建了一个标签,并认为以通常的方式连接标签会很好,但是我错了。所以我想知道如何让我的Text标签连接到我的视图控制器,以便可以使用自定义单元格。
class ViewController: BaseViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var newsfeedTableView: UITableView!
var ref: DatabaseReference!
var posts = [String]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (posts.count)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "cell")
//here is where I need the custom label to get the posts
cell.textLabel?.text = posts[indexPath.row]
cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 18.0)
return cell
}
}
答案 0 :(得分:3)
创建UITableViewCell
的子类并将IBOutlet连接到该类
class YourCell: UITableViewCell {
@IBOutlet weak var customLabel: UILabel!
...
}
不要忘记在情节提要中设置原型单元的类:
然后在cellForRowAt
数据源方法中将已出队的单元格下调为YourCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! YourCell
然后您就可以访问YourCell
个网点
cell.customLabel.text = "SomeText"
...
答案 1 :(得分:1)
我假设您正在使用Storyboard。
首先,您应该了解,使用自己的自定义表单元格几乎没有什么区别。在这种情况下,在方法“ cellForRowAtIndexPath”中,使单元出队后,您只需要像'as!这样键入表单元格即可。 YourCustomTableCellClass'。在此行之后,您可以访问该类的每个属性。
首先,根据需要在Storyboard上设计表格单元。
现在,创建UITableViewCell的子类,并将该类分配给您在Storyboard上设计的原型自定义单元格。另外,不要忘记在Storyboard表单元中设置“重用标识符”。
然后将您的商店与Storyboard中的自定义单元类连接起来。
现在您可以使用如下代码:
class YourTableCellClass: UITableViewCell {
// I'm using these outlets as a sample, but you have to connect them from Storyboard.
var leftTextLabel: UILabel!
var rightTextLabel: UILabel!
}
class YourTableController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - TableView Delegate & DataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1 // return your number of rows here...
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100 // return the height for the row here.....or you can set height from Storyboard if you have fix height of all rows.
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier", for: indexPath) as! YourTableCellClass
cell.leftTextLabel.text = "Text" // Set text here....
cell.rightTextLabel.text = "Text" // Set text here....
return cell
}
}