CatalystOutlineView
UIKit的NSOutlineView(AppKit中流行控件的复制品)
该行为采用经典组件的最大功能实现,并略有扩展
概览
需求
- iOS 13.0+ (macCatalyst)
- Swift 5
安装
手动安装
只需将 Source
文件夹添加到您的项目。
CocoaPods
使用Podfile配合 CocoaPods
pod 'CatalystOutlineView', '~> 0.1'
使用方法
🎨 Storyboard
只需将UITableView的类设置为CatalystOutlineView中的任何一个。
💻 代码
private var outline = CatalystOutlineView(frame: .zero) {
didSet {
outlineView.outlineDataSource = self
outlineView.outlineDelegate = self
}
}
配置
数据源和代理
为您的主类连接控件
@IBOutlet private(set) weak var outlineView: CatalystOutlineView!
然后设置outlineDataSource和outlineDelegate属性
outlineView.outlineDataSource = self
outlineView.outlineDelegate = self
然后您应该实现
CatalystOutlineViewDataSource
func outlineView(_ outlineView: CatalystOutlineView, numberOfChildrenOfItem item: Any?) -> Int
func outlineView(_ outlineView: CatalystOutlineView, child index: Int, ofItem item: Any?) -> Any
func outlineView(_ outlineView: CatalystOutlineView, isItemExpandable item: Any) -> Bool
CatalystOutlineViewDelegate
func outlineView(_ outlineView: CatalystOutlineView?, cellForItem item: Any?) -> UITableViewCell?
func outlineView(_ outlineView: CatalystOutlineView?, shouldCollapseItem item: Any?) -> Bool
func outlineView(_ outlineView: CatalystOutlineView?, didExpandItem item: Any?)
func outlineView(_ outlineView: CatalystOutlineView?, didCollapseItem item: Any?)
func view(forHeader outlineView: CatalystOutlineView?) -> UIView?
func height(forHeader outlineView: CatalystOutlineView?) -> CGFloat
func height(forCell outlineView: CatalystOutlineView?, ofItem item: Any?) -> CGFloat
// if you want context menu for your outlineView
func contextMenuConfiguration(for item: Any?) -> UIContextMenuConfiguration?
你的单元格可能符合ExpandCollapseDisplaying协议
func expand()
func collapse()
你还可以从仓库检查'示例'项目!
许可
CatalystOutlineViewDelegate遵循MIT许可。请参阅LICENSE以获取详细信息。