将视图作为UITableViewCell放在tableView中是一个好方法吗?

时间:2018-02-05 15:14:11

标签: ios swift uitableview

我有一个树xib文件,名为LogoStyle1(青色方块),FieldStyle1(紫色方块),ButtonStyle1(黄色方块)。 我创建了UITableView(黑色方块)。在TableView中,我放了所有的xib。

我的问题是这样做是一个好方法,还是我需要在没有TableView的情况下为xib做单独的customView。因为使用dequeReusableCell而不需要可重复使用的单元格。

注意:实际上我买了一个app模板,试着理解作者为什么要这样做。

enter image description here

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
}

2 个答案:

答案 0 :(得分:2)

如果您正在谈论将子视图直接添加到表格视图而不是其单元格,那么这是一个非常错误的想法。您应该将表格视图的内容视图视为私有。

听起来你需要的是静态表视图。我建议阅读。 (您需要使用UITableViewController和故事板。)

答案 1 :(得分:0)

只要您不直接向tableview添加视图,即您没有tableView.addSubview(xyzView),那么您就是好的。

TableView功能强大,因为它为您提供了为“每个部分”添加页脚,标题或完全自行添加“tableview”的选项。

你可能会做什么(我不确定你是否这样做)做错了就是添加另一个tableviewCell来为你的section或tableview本身创建一个代替页脚的东西。