我有一个树xib文件,名为LogoStyle1(青色方块),FieldStyle1(紫色方块),ButtonStyle1(黄色方块)。 我创建了UITableView(黑色方块)。在TableView中,我放了所有的xib。
我的问题是这样做是一个好方法,还是我需要在没有TableView的情况下为xib做单独的customView。因为使用dequeReusableCell而不需要可重复使用的单元格。
注意:实际上我买了一个app模板,试着理解作者为什么要这样做。
xib自定义类:
class LogoStyle1: UITableViewCell {
}
class FieldStyle1: UITableViewCell {
}
class ButtonStyle1: UITableViewCell {
}
override func viewDidLoad() {
super.viewDidLoad()
createView() }
function createView
func createView() {
// Create Header
// Create Table
tableStyle.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
tableStyle.delegate = self;
tableStyle.dataSource = self;
tableStyle.backgroundColor = UIColor.init(red: 243/255.0, green: 246/255.0, blue: 249/255.0, alpha: 1.0)
tableStyle.separatorColor = UIColor.clear
tableStyle.allowsSelection = false
tableStyle.isScrollEnabled = false
// register UINib for LogoStyle1, FieldStyle1, ButtonStyle1
tableStyle.register(UINib(nibName: "LogoStyle1", bundle: nil), forCellReuseIdentifier: "LogoStyle1")
tableStyle.register(UINib(nibName: "FieldStyle1", bundle: nil), forCellReuseIdentifier: "FieldStyle1")
tableStyle.register(UINib(nibName: "ButtonStyle1", bundle: nil), forCellReuseIdentifier: "ButtonStyle1")
self.view.addSubview(tableStyle)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
return 120
}else if indexPath.row == 1 {
return 272
}else{
return 94
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.row {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "LogoStyle1", for: indexPath) as! LogoStyle1
cell.backgroundColor = UIColor.clear
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "FieldStyle1", for: indexPath) as! FieldStyle1
cell.backgroundColor = UIColor.clear
cell.delegate = self
return cell
case 2:
let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonStyle1", for: indexPath) as! ButtonStyle1
cell.backgroundColor = UIColor.clear
cell.delegate = self
return cell
default:
break
}
let cell = UITableViewCell() // cell nil
return cell
}
答案 0 :(得分:2)
如果您正在谈论将子视图直接添加到表格视图而不是其单元格,那么这是一个非常错误的想法。您应该将表格视图的内容视图视为私有。
听起来你需要的是静态表视图。我建议阅读。 (您需要使用UITableViewController
和故事板。)
答案 1 :(得分:0)
只要您不直接向tableview添加视图,即您没有tableView.addSubview(xyzView)
,那么您就是好的。
TableView功能强大,因为它为您提供了为“每个部分”添加页脚,标题或完全自行添加“tableview”的选项。
你可能会做什么(我不确定你是否这样做)做错了就是添加另一个tableviewCell来为你的section或tableview本身创建一个代替页脚的东西。