gpt4 book ai didi

ios - 如何在 swift 中设置 tableview Accordion ?

转载 作者:行者123 更新时间:2023-11-30 13:38:25 26 4
gpt4 key购买 nike

我是 IOS 新手,试图设计一个 Accordion 菜单。我被卡住了。首先,我让我的 UI 具有一些静态内容( TableView 和 View 中的 3 行标签......)。在尝试设置 Accordion 时。 .没有显示任何回应..

这里是我的 viewcontroller.swift

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
let previndexPath = selectedIndexPath
if indexPath == selectedIndexPath
{
selectedIndexPath = nil
}
else
{
selectedIndexPath = indexPath
}

var indexPaths:Array <NSIndexPath> = []
if let previous = previndexPath
{
indexPaths += [previous]
}
if let current = selectedIndexPath
{
indexPaths += [current]
}
if indexPaths.count > 0
{
tableView.reloadRowsAtIndexPaths(indexPaths, withRowAnimation:UITableViewRowAnimation.Automatic)
}

}


func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

(cell as! TableViewCell).watchFrameChanges()
(cell as! TableViewCell2).watchFrameChanges()
}

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
{
(cell as!TableViewCell).ignoreFrameChanges()
(cell as!TableViewCell2).ignoreFrameChanges()
}
override func viewWillDisappear(animated: Bool)
{
super.viewWillDisappear(animated)
for cell in tblvw.visibleCells as! [TableViewCell] {
cell.ignoreFrameChanges()
}
for cell in tblvw.visibleCells as! [TableViewCell2] {
cell.ignoreFrameChanges()
}
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath == selectedIndexPath {
return TableViewCell.expandedHeight

} else {
return TableViewCell.defaultHeight

}


if indexPath == selectedIndexPath {
return TableViewCell2.expandedHeight
} else {
return TableViewCell2.defaultHeight
}
return 0.0

}

最佳答案

我也有同样的问题。问题是何时实现多个单元。解决办法是:

override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)


for cell in tableView.visibleCells {

if(cell.reuseIdentifier == "YOUR_IDENTIFIER_FROM_CELL")
{
let ncelda = cell as! TableViewCell
ncelda.ignoreFrameChanges()
}

else
{
let mcelda = cell as! TableViewCell2
mcelda.ignoreFrameChanges()
}
}
}

关于ios - 如何在 swift 中设置 tableview Accordion ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35837736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com