Comments (10)
如果你是和我demo里面一样,用的override func setSelected(_ selected: Bool, animated: Bool) {}
方法实现的单选,那你
需要加一行item2.selectionStyle = .default
, 并且去掉setSelectionHandler回调里面的self.manager.reload()
原因是ZJExpandTreeCellItem类里面默认把选中效果关掉了。不需要reload()的原因是这是系统的选中方法,系统有实现,不需要自己手动刷新tableView。
from zjtableviewmanager.
我按照您的方法试了一下,没有打到预期的效果,可能是我的写的不对,你看我用自己的理解写了一下,但是有一个问题,选中完三级以后,我想吧二级展开,但是这种情况下,展开是有问题的,麻烦您帮我看下。
func setShowData() {
manager.add(section: section)
guard let listModel = self.model else {
return
}
let linelistModel = listModel.resultLineInfo
for item in linelistModel! {
let item0 = ServerListTitleItem()
item0.model = item
item0.isExpand = true
item0.cellHeight = SXRealValue(55)
section.add(item: item0)
for group in item.groupList! {
let item1 = ServerVideoItem()
item1.model = group
item1.cellHeight = SXRealValue(60)
item0.addSub(item: item1, section: section)
for vmess in group.vmessList! {
let item2 = ServerContentItem()
item2.model = vmess
if vmess.flagId == self.selectModel?.flagId {
item2.isSelect = true
}else {
item2.isSelect = false
}
item2.cellHeight = SXRealValue(55)
item1.addSub(item: item2, section: section)
item2.setSelectionHandler { (vmessModel: ServerContentItem) in
self.selectModel = vmessModel.model
self.section.removeAllItems()
self.manager.removeAllSections()
self.setShowData()
}
}
}
}
manager.reload()
}
from zjtableviewmanager.
如果你是和我demo里面一样,用的
override func setSelected(_ selected: Bool, animated: Bool) {}
方法实现的单选,那你
需要加一行item2.selectionStyle = .default
, 并且去掉setSelectionHandler回调里面的self.manager.reload()
原因是ZJExpandTreeCellItem类里面默认把选中效果关掉了。不需要reload()的原因是这是系统的选中方法,系统有实现,不需要自己手动刷新tableView。
我刚才用您的方法试了一下,有效果,但是在点击二级的时候,三级的选中效果会失效,不知道是什么原因。而且没有默认的选中效果。
from zjtableviewmanager.
哦,这个我没考虑到,这个应该是系统的方法的缺陷了。我看你一开始提供的代码,isSelect属性应该是你自己定义的吧,然后在cell里面根据isSelect显示不同的样式。那还是用你自定义的选中方法吧,再有问题的话最好提供个简化的demo
item2.setSelectionHandler { (vmessModel: ServerContentItem) in
// 找出当前同级的所有cell选中状态设置为false
let sameLevelItems = vmessModel.superLevelItem?.getAllBelowItems().filter({$0.level == vmessModel.level})
for item in sameLevelItems! {
item.isSelect = false
}
vmessModel. isSelect = true//当前点击中的cell选中状态设置为true
self.selectModel = vmessModel.model
self.manager.reload()
}
from zjtableviewmanager.
哦,这个我没考虑到,这个应该是系统的方法的缺陷了。我看你一开始提供的代码,isSelect属性应该是你自己定义的吧,然后在cell里面根据isSelect显示不同的样式。那还是用你自定义的选中方法吧,再有问题的话最好提供个简化的demo
item2.setSelectionHandler { (vmessModel: ServerContentItem) in // 找出当前同级的所有cell选中状态设置为false let sameLevelItems = vmessModel.superLevelItem?.getAllBelowItems().filter({$0.level == vmessModel.level}) for item in sameLevelItems! { item.isSelect = false } vmessModel. isSelect = true//当前点击中的cell选中状态设置为true self.selectModel = vmessModel.model self.manager.reload() }
其实最关键的就是页面数据没有刷新,如果方便的化,能给我一个联系方式么,我给您demo
from zjtableviewmanager.
就用你最初提问的时候的代码,在item2.setSelectionHandler
里面按照我前一个回复改一下应该就行了。还是不行的话,你demo发我邮箱吧[email protected]
from zjtableviewmanager.
就用你最初提问的时候的代码,在
item2.setSelectionHandler
里面按照我前一个回复改一下应该就行了。还是不行的话,你demo发我邮箱吧[email protected]
刚试了一下,还是不行,我已经把简易demo发您邮箱了,麻烦您了
from zjtableviewmanager.
你说还是不行,但是没说具体问题。我看了一下你的demo,我猜你说不行的原因是现在只在单击的那个cell所在的展开区域内有效。如果需要在整个tableview范围内实现单选,那就把
let sameLevelItems = vmessModel.superLevelItem?.getAllBelowItems().filter({$0.level == vmessModel.level})
改成
let sameLevelItems = self.section.items.filter({($0 as! ZJExpandTreeCellItem).level == vmessModel.level})
from zjtableviewmanager.
你说还是不行,但是没说具体问题。我看了一下你的demo,我猜你说不行的原因是现在只在单击的那个cell所在的展开区域内有效。如果需要在整个tableview范围内实现单选,那就把
let sameLevelItems = vmessModel.superLevelItem?.getAllBelowItems().filter({$0.level == vmessModel.level})
改成
let sameLevelItems = self.section.items.filter({($0 as! ZJExpandTreeCellItem).level == vmessModel.level})
非常感谢,这个问题解决了,但是还有一个问题。第一次进来,默认会有问题。
from zjtableviewmanager.
这个应该是你设置默认的isselect=true的时候出问题导致的,断点调试一下吧。
from zjtableviewmanager.
Related Issues (11)
- 快速点击目录折叠展开时直接崩溃 HOT 1
- manager.selectedItems()这个方法,单元格在选中的情况下隐藏了,就不包括进去了
- 想要在外部获取到cell 并且更新cell的UI是如何处理呢
- cellDidAppear() 中执行 item.updateHeight()无效 HOT 1
- 大佬,这个树状的tableView要怎么往里面添加数据啊 HOT 1
- 你好,请问该框架没有滚动事件穿透吗? HOT 1
- 多层cell的关系如何关联数据源,还有点击事件回调 HOT 3
- 第0级第一条数据是展开的,在点击第0级第二条数据展开时,第一条数据自动收起,有这个功能吗 HOT 1
- autoHeight后约束报错 HOT 4
- pod引入后toggleExpand方法报错 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zjtableviewmanager.