Swift Как пользовательская ячейка должна загружать данные таблицы и расширять их при использовании didSelectRowAt? - PullRequest
0 голосов
/ 19 октября 2019

Я создаю пользовательскую ячейку, которая включает в себя табличное представление

Вот MainTableView и данные

var data = [People(name:"Kevin",age:"18",tall:"180")]

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MainCell", for: indexPath) as! MainTableViewCell

cell.title = data[indexPath.row].name
cell.detail = ["age \(data[indexPath.row].age)","tall \(data[indexPath.row].tall)"]
cell.isExtend = false

return cell

}

Я пытаюсь коснуться ячейки, чтобы увеличить высоту tableView и загрузить данные

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MainCell", for: indexPath) as! MainTableViewCell

cell.isExpand = !cell.isExpand

}

Вот MainTableViewCell

class MainTableViewCell: UITableViewCell {
@IBOutlet weak var title: UILabel!
@IBOutlet weak var detailTableView: UITableView!
@IBOutlet weak var detailTableViewHeight: NSLayoutConstraint!

var detail:[String] = []{
didSet{
detailTableView.reloadData()
}
}

var isExpand: Bool = false{
didSet{
detailTableView.isHidden = !isExpand
detailTableView.reloadData()
detailTableViewHeight.constant = isExpand ? detailTableView.contentSize.height:0
}
}

override func awakeFromNib() {
        super.awakeFromNib()
        detailTableView.delegate = self
        detailTableView.dataSource = self
        detailTableView.isScrollEnabled = false
        detailTableViewHeight.constant = 0
    }
}

Я использую tableView для загрузки данных и сначала скрываю часть темы, и нажимаю, чтобы показать и скрыть тему

, но ничего не произошло

Я что-то забыл?

1 Ответ

1 голос
/ 19 октября 2019

In cellforRowAt:

let cell: MoreUserDetails = tableView.dequeueReusableCell(withIdentifier: "MoreUserDetails") as! MoreUserDetails
cell.backgroundColor = .clear
cell.selectionStyle = .none
if isExpand {
// your func when its expanded
}
else {
// your func when its hidden
}
return cell

в выбранном

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
if isSelected[indexPath.row] {
                    isExpand[indexPath.row] = false
                }
                else {
                    isExpand[indexPath.row] = true
                }
                self.tableVIew.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...