|
@@ -17,6 +17,8 @@ import Cocoa
|
|
|
|
|
|
@objc optional func controller(controller: KMLeftSideViewController, bookMarkDidChange bookMarks: [KMBookMarkItem])
|
|
@objc optional func controller(controller: KMLeftSideViewController, bookMarkDidChange bookMarks: [KMBookMarkItem])
|
|
@objc optional func controller(controller: KMLeftSideViewController, rotateType: KMRotateType)
|
|
@objc optional func controller(controller: KMLeftSideViewController, rotateType: KMRotateType)
|
|
|
|
+
|
|
|
|
+ @objc optional func controller(controller: KMLeftSideViewController, listViewSelectionDidChange object: Any?, info: [String : Any]?)
|
|
}
|
|
}
|
|
|
|
|
|
extension KMLeftSideViewController.Key {
|
|
extension KMLeftSideViewController.Key {
|
|
@@ -24,81 +26,6 @@ extension KMLeftSideViewController.Key {
|
|
}
|
|
}
|
|
|
|
|
|
class KMLeftSideViewController: KMSideViewController {
|
|
class KMLeftSideViewController: KMSideViewController {
|
|
- var dataSource : [KMLeftMethodMode] = [KMLeftMethodMode]()
|
|
|
|
-
|
|
|
|
- var type : KMLeftMethodMode = KMLeftMethodMode()
|
|
|
|
- var isShowPanel : Bool = false
|
|
|
|
- var norImage : [String] = []
|
|
|
|
- var selectImage : [String] = []
|
|
|
|
- var mainVC: KMMainViewController?
|
|
|
|
- var selectPages: [Int]?
|
|
|
|
- open weak var delegate: KMLeftSideViewControllerDelegate?
|
|
|
|
-
|
|
|
|
- let noteColumnId = NSUserInterfaceItemIdentifier(rawValue: "note")
|
|
|
|
- let authorColumnId = NSUserInterfaceItemIdentifier(rawValue: "author")
|
|
|
|
-
|
|
|
|
- struct Key {}
|
|
|
|
-
|
|
|
|
- let scalingIncrement: Float = 0.1
|
|
|
|
-
|
|
|
|
- deinit {
|
|
|
|
- KMPrint("KMLeftSideViewController deinit.")
|
|
|
|
-
|
|
|
|
- NotificationCenter.default.removeObserver(self)
|
|
|
|
- DistributedNotificationCenter.default().removeObserver(self)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- override var nibName: NSNib.Name? {
|
|
|
|
- return "LeftSideView"
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- convenience init(type : KMLeftMethodMode) {
|
|
|
|
- self.init()
|
|
|
|
- self.type = type
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- override func viewDidLoad() {
|
|
|
|
- super.viewDidLoad()
|
|
|
|
-
|
|
|
|
- self.reloadThumbnailSize()
|
|
|
|
- self.reloadSnapshotSize()
|
|
|
|
-
|
|
|
|
-// DistributedNotificationCenter.default().addObserver(self, selector: #selector(interfaceThemeDidChanged), name: NSApplication.interfaceThemeChangedNotification, object: nil)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- func showPanelView(show: Bool) {
|
|
|
|
- self.isShowPanel = show
|
|
|
|
- if show {
|
|
|
|
- self.leftView.segmentedControl.selectedSegment = 0
|
|
|
|
- } else {
|
|
|
|
- self.leftView.segmentedControl.selectedSegment = UInt8.max
|
|
|
|
- self.type.methodType = .None
|
|
|
|
- self.delegate?.controlStateChange?(self, show: false)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- func refreshMethodType(methodType: BotaType) {
|
|
|
|
- let newType = KMLeftMethodMode()
|
|
|
|
- var show = true
|
|
|
|
- if self.type.methodType != methodType {
|
|
|
|
- newType.methodType = methodType
|
|
|
|
- }
|
|
|
|
- if self.type.methodType == methodType {
|
|
|
|
- show = false
|
|
|
|
- } else if methodType == .None {
|
|
|
|
- show = false
|
|
|
|
- }
|
|
|
|
- self.type = newType;
|
|
|
|
- self.delegate?.controlStateChange?(self,show:show)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // MARK: - New
|
|
|
|
- /*
|
|
|
|
- NSArrayController *findArrayController;
|
|
|
|
- NSArrayController *groupedFindArrayController;
|
|
|
|
- }
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
@IBOutlet var segmentedControl: KMSegmentedControl!
|
|
@IBOutlet var segmentedControl: KMSegmentedControl!
|
|
|
|
|
|
@IBOutlet var thumbnailTableView: KMThumbnailTableView!
|
|
@IBOutlet var thumbnailTableView: KMThumbnailTableView!
|
|
@@ -152,13 +79,93 @@ class KMLeftSideViewController: KMSideViewController {
|
|
@IBOutlet weak var emptySearchBox: NSBox!
|
|
@IBOutlet weak var emptySearchBox: NSBox!
|
|
@IBOutlet weak var emptySearchLabel: NSTextField!
|
|
@IBOutlet weak var emptySearchLabel: NSTextField!
|
|
|
|
|
|
|
|
+ lazy var leftSideEmptyVC: KMLeftSideEmptyFileViewController = {
|
|
|
|
+ let vc = KMLeftSideEmptyFileViewController(nibName: "KMLeftSideEmptyFileViewController", bundle: nil)
|
|
|
|
+ vc.view.wantsLayer = true
|
|
|
|
+ return vc
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ lazy var leftView: KMBotaLeftView = {
|
|
|
|
+ let view = KMBotaLeftView()
|
|
|
|
+ return view
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ static let kMinSidePaneWidth: CGFloat = 270
|
|
|
|
+
|
|
|
|
+ var type : KMLeftMethodMode = KMLeftMethodMode()
|
|
|
|
+ var isShowPanel : Bool = false
|
|
|
|
+ weak var delegate: KMLeftSideViewControllerDelegate?
|
|
|
|
+
|
|
|
|
+ let noteColumnId = NSUserInterfaceItemIdentifier(rawValue: "note")
|
|
|
|
+ let authorColumnId = NSUserInterfaceItemIdentifier(rawValue: "author")
|
|
|
|
+
|
|
|
|
+ struct Key {}
|
|
|
|
+
|
|
|
|
+ var mwcFlags: MwcFlags = MwcFlags()
|
|
|
|
+ let scalingIncrement: Float = 0.1
|
|
|
|
+
|
|
var filterButtonLayer: NSView?
|
|
var filterButtonLayer: NSView?
|
|
var moreButtonLayer: KMButtonLayer?
|
|
var moreButtonLayer: KMButtonLayer?
|
|
|
|
|
|
|
|
+ // 缩略图
|
|
var thumbnails: [KMThumbnail] = []
|
|
var thumbnails: [KMThumbnail] = []
|
|
var isDisplayPageSize = false
|
|
var isDisplayPageSize = false
|
|
var thumbnailCacheSize: CGFloat = 32 * 3
|
|
var thumbnailCacheSize: CGFloat = 32 * 3
|
|
|
|
+ var updatingThumbnailSelection = false
|
|
|
|
+
|
|
|
|
+ // 大纲
|
|
|
|
+ var isSearchOutlineMode = false
|
|
|
|
+ var outlineIgnoreCaseFlag = false
|
|
|
|
+ var tocType: KMFoldType = .none
|
|
|
|
+ var renamePDFOutline: CPDFOutline?
|
|
|
|
+ var renamePDFOutlineTextField: NSTextField?
|
|
|
|
+ private var _dragPDFOutline: CPDFOutline?
|
|
|
|
+ var updatingOutlineSelection = false
|
|
|
|
+
|
|
|
|
+ // 注释
|
|
|
|
+ var noteTypeDict: [String : Any] = [:]
|
|
|
|
+ private var _noteSortType: KMNoteSortType = .none
|
|
|
|
+ var noteSortType: KMNoteSortType {
|
|
|
|
+ get {
|
|
|
|
+ return self._noteSortType
|
|
|
|
+ }
|
|
|
|
+ set {
|
|
|
|
+ self._noteSortType = newValue
|
|
|
|
+
|
|
|
|
+ NotificationCenter.default.post(name: NSNotification.Name(rawValue: "KMAnnotationSortTypeKeyNotification"), object: self)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var isAscendSort = false {
|
|
|
|
+ didSet {
|
|
|
|
+ NotificationCenter.default.post(name: NSNotification.Name(rawValue: "KMAnnotationSortTypeKeyNotification"), object: self)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var allFoldNotes: [CPDFAnnotation] = []
|
|
|
|
+ var canFoldNotes: [CPDFAnnotation] = []
|
|
|
|
+
|
|
|
|
+ var isRenameNoteOutline = false
|
|
|
|
+
|
|
|
|
+ // 注释列表数据源
|
|
|
|
+ var annotations: [KMBOTAAnnotationSection] = []
|
|
|
|
+ // 所有注释
|
|
|
|
+ var allAnnotations: [CPDFAnnotation] = []
|
|
|
|
+ // 注释搜索模式标记
|
|
|
|
+ var noteSearchMode = false
|
|
|
|
+ // 注释搜索数组
|
|
|
|
+ var noteSearchArray: [CPDFAnnotation] = []
|
|
|
|
+ // 注释搜索 忽略大小写标识
|
|
|
|
+ var caseInsensitiveNoteSearch = false
|
|
|
|
+
|
|
|
|
+ // 快照
|
|
var snapshotCacheSize: CGFloat = 32 * 3
|
|
var snapshotCacheSize: CGFloat = 32 * 3
|
|
|
|
+ var isSearchSnapshotMode = false
|
|
|
|
+ var snapshots: [KMSnapshotModel] = []
|
|
|
|
+ var dirtySnapshots: [KMSnapshotWindowController] = []
|
|
|
|
+ var searchSnapshots: [KMSnapshotModel] = []
|
|
|
|
+
|
|
|
|
+ // 搜索
|
|
private var _findState: KMFindState = .none
|
|
private var _findState: KMFindState = .none
|
|
var findState: KMFindState {
|
|
var findState: KMFindState {
|
|
get {
|
|
get {
|
|
@@ -172,7 +179,6 @@ class KMLeftSideViewController: KMSideViewController {
|
|
if self._findState == .content {
|
|
if self._findState == .content {
|
|
self.search(self.searchField)
|
|
self.search(self.searchField)
|
|
} else if self.findState == .note {
|
|
} else if self.findState == .note {
|
|
-// self.searchNotes(self.searchField)
|
|
|
|
self.searchNotes(nil)
|
|
self.searchNotes(nil)
|
|
} else if self.findState == .snapshot {
|
|
} else if self.findState == .snapshot {
|
|
self.searchNotes(self.searchField)
|
|
self.searchNotes(self.searchField)
|
|
@@ -188,96 +194,69 @@ class KMLeftSideViewController: KMSideViewController {
|
|
}
|
|
}
|
|
var groupSearchResults: [KMSearchMode] = []
|
|
var groupSearchResults: [KMSearchMode] = []
|
|
var findPaneState: KMFindPaneState = .singular
|
|
var findPaneState: KMFindPaneState = .singular
|
|
- var isSearchOutlineMode = false
|
|
|
|
- var isSearchSnapshotMode = false
|
|
|
|
- var outlineIgnoreCaseFlag = false
|
|
|
|
- var noteTypeDict: [String : Any] = [:]
|
|
|
|
|
|
|
|
- private let MIN_SIDE_PANE_WIDTH: CGFloat = 270
|
|
|
|
- private let LABEL_COLUMNID = "label"
|
|
|
|
var foldType: KMFoldAllAnnotationType = .none
|
|
var foldType: KMFoldAllAnnotationType = .none
|
|
|
|
|
|
- var tocType: KMFoldType = .none
|
|
|
|
-
|
|
|
|
- var snapshots: [KMSnapshotModel] = []
|
|
|
|
- var dirtySnapshots: [KMSnapshotWindowController] = []
|
|
|
|
- var searchSnapshots: [KMSnapshotModel] = []
|
|
|
|
-
|
|
|
|
- private var _noteSortType: KMNoteSortType = .none
|
|
|
|
- var noteSortType: KMNoteSortType {
|
|
|
|
- get {
|
|
|
|
- return self._noteSortType
|
|
|
|
- }
|
|
|
|
- set {
|
|
|
|
- self._noteSortType = newValue
|
|
|
|
-
|
|
|
|
- NotificationCenter.default.post(name: NSNotification.Name(rawValue: "KMAnnotationSortTypeKeyNotification"), object: self)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- var isAscendSort = false {
|
|
|
|
- didSet {
|
|
|
|
- NotificationCenter.default.post(name: NSNotification.Name(rawValue: "KMAnnotationSortTypeKeyNotification"), object: self)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- lazy var leftSideEmptyVC: KMLeftSideEmptyFileViewController = {
|
|
|
|
- let vc = KMLeftSideEmptyFileViewController(nibName: "KMLeftSideEmptyFileViewController", bundle: nil)
|
|
|
|
- vc.view.wantsLayer = true
|
|
|
|
- return vc
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
var leftMargin: CGFloat = 0
|
|
var leftMargin: CGFloat = 0
|
|
|
|
|
|
- lazy var leftView: KMBotaLeftView = {
|
|
|
|
- let view = KMBotaLeftView()
|
|
|
|
- return view
|
|
|
|
- }()
|
|
|
|
-
|
|
|
|
private var _copysPages: [CPDFPage] = []
|
|
private var _copysPages: [CPDFPage] = []
|
|
var copyPages: [CPDFPage] {
|
|
var copyPages: [CPDFPage] {
|
|
get {
|
|
get {
|
|
return self._copysPages
|
|
return self._copysPages
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ var dragIn = false
|
|
|
|
|
|
- private let kKMPDFViewOutlineDragDataType = NSPasteboard.PasteboardType("kKMPDFViewOutlineDragDataType")
|
|
|
|
private let KPDFThumbnailDoucumentURLForDraggedTypes = NSPasteboard.PasteboardType("KPDFThumbnailDoucumentURLForDraggedTypes")
|
|
private let KPDFThumbnailDoucumentURLForDraggedTypes = NSPasteboard.PasteboardType("KPDFThumbnailDoucumentURLForDraggedTypes")
|
|
|
|
|
|
- var renamePDFOutline: CPDFOutline?
|
|
|
|
- var renamePDFOutlineTextField: NSTextField?
|
|
|
|
- var allFoldNotes: [CPDFAnnotation] = []
|
|
|
|
- var notes: [CPDFAnnotation] = []
|
|
|
|
- var canFoldNotes: [CPDFAnnotation] = []
|
|
|
|
-
|
|
|
|
- var isRenameNoteOutline = false
|
|
|
|
|
|
+ deinit {
|
|
|
|
+ KMPrint("KMLeftSideViewController deinit.")
|
|
|
|
+
|
|
|
|
+ NotificationCenter.default.removeObserver(self)
|
|
|
|
+ DistributedNotificationCenter.default().removeObserver(self)
|
|
|
|
+ }
|
|
|
|
|
|
- // 注释列表
|
|
|
|
- // 注释列表数据源
|
|
|
|
- var annotations: [KMBOTAAnnotationSection] = []
|
|
|
|
- // 所有注释
|
|
|
|
- var allAnnotations: [CPDFAnnotation] = []
|
|
|
|
- // 注释搜索模式标记
|
|
|
|
- var noteSearchMode = false
|
|
|
|
- // 注释搜索数组
|
|
|
|
- var noteSearchArray: [CPDFAnnotation] = []
|
|
|
|
- // 注释搜索 忽略大小写标识
|
|
|
|
- var caseInsensitiveNoteSearch = false
|
|
|
|
|
|
+ override var nibName: NSNib.Name? {
|
|
|
|
+ return "LeftSideView"
|
|
|
|
+ }
|
|
|
|
|
|
- var mwcFlags: MwcFlags = MwcFlags()
|
|
|
|
|
|
+ convenience init(type : KMLeftMethodMode) {
|
|
|
|
+ self.init()
|
|
|
|
+ self.type = type
|
|
|
|
+ }
|
|
|
|
|
|
- private var _dragPDFOutline: CPDFOutline?
|
|
|
|
|
|
+ override func viewDidLoad() {
|
|
|
|
+ super.viewDidLoad()
|
|
|
|
+
|
|
|
|
+ self.reloadThumbnailSize()
|
|
|
|
+ self.reloadSnapshotSize()
|
|
|
|
+ }
|
|
|
|
|
|
- var updatingOutlineSelection = false
|
|
|
|
|
|
+ func showPanelView(show: Bool) {
|
|
|
|
+ self.isShowPanel = show
|
|
|
|
+ if show {
|
|
|
|
+ self.leftView.segmentedControl.selectedSegment = 0
|
|
|
|
+ } else {
|
|
|
|
+ self.leftView.segmentedControl.selectedSegment = UInt8.max
|
|
|
|
+ self.type.methodType = .None
|
|
|
|
+ self.delegate?.controlStateChange?(self, show: false)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- fileprivate var dragFilePath: String?
|
|
|
|
- var filePromiseQueue: OperationQueue = {
|
|
|
|
- let queue = OperationQueue()
|
|
|
|
- return queue
|
|
|
|
- }()
|
|
|
|
- var dragIn = false
|
|
|
|
- var dragedIndexPaths: [Int] = []
|
|
|
|
- var updatingThumbnailSelection = false
|
|
|
|
|
|
+ func refreshMethodType(methodType: BotaType) {
|
|
|
|
+ let newType = KMLeftMethodMode()
|
|
|
|
+ var show = true
|
|
|
|
+ if self.type.methodType != methodType {
|
|
|
|
+ newType.methodType = methodType
|
|
|
|
+ }
|
|
|
|
+ if self.type.methodType == methodType {
|
|
|
|
+ show = false
|
|
|
|
+ } else if methodType == .None {
|
|
|
|
+ show = false
|
|
|
|
+ }
|
|
|
|
+ self.type = newType;
|
|
|
|
+ self.delegate?.controlStateChange?(self,show:show)
|
|
|
|
+ }
|
|
|
|
|
|
override func loadView() {
|
|
override func loadView() {
|
|
super.loadView()
|
|
super.loadView()
|
|
@@ -600,7 +579,6 @@ class KMLeftSideViewController: KMSideViewController {
|
|
frame.size.height = self.tocOutlineView.enclosingScrollView?.superview?.frame.size.height ?? 0
|
|
frame.size.height = self.tocOutlineView.enclosingScrollView?.superview?.frame.size.height ?? 0
|
|
self.tocOutlineView.enclosingScrollView?.frame = frame
|
|
self.tocOutlineView.enclosingScrollView?.frame = frame
|
|
|
|
|
|
-// [self updateSnapshotsIfNeeded];
|
|
|
|
Task { @MainActor in
|
|
Task { @MainActor in
|
|
self.snapshotTableView.reloadData()
|
|
self.snapshotTableView.reloadData()
|
|
}
|
|
}
|
|
@@ -1158,7 +1136,7 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
|
|
|
let newScaling: CGFloat = scaling.cgFloat + 0.1
|
|
let newScaling: CGFloat = scaling.cgFloat + 0.1
|
|
let newThumbnailHeight = thumbnailSize.width * newScaling
|
|
let newThumbnailHeight = thumbnailSize.width * newScaling
|
|
- if (newThumbnailHeight > MIN_SIDE_PANE_WIDTH) {
|
|
|
|
|
|
+ if (newThumbnailHeight > Self.kMinSidePaneWidth) {
|
|
self.thumbnailZoomOutButton.isEnabled = false
|
|
self.thumbnailZoomOutButton.isEnabled = false
|
|
} else {
|
|
} else {
|
|
self.thumbnailZoomOutButton.isEnabled = true
|
|
self.thumbnailZoomOutButton.isEnabled = true
|
|
@@ -1187,7 +1165,7 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
let snapshotSize = (self.snapshots.safe_element(for: row) as? KMSnapshotModel)?.windowC?.thumbnail?.size ?? CGSizeMake(120, 63)
|
|
let snapshotSize = (self.snapshots.safe_element(for: row) as? KMSnapshotModel)?.windowC?.thumbnail?.size ?? CGSizeMake(120, 63)
|
|
var newScaling = scaling + 0.1
|
|
var newScaling = scaling + 0.1
|
|
let newSnapshotHeight = snapshotSize.width * newScaling.cgFloat;
|
|
let newSnapshotHeight = snapshotSize.width * newScaling.cgFloat;
|
|
- if (newSnapshotHeight > MIN_SIDE_PANE_WIDTH) {
|
|
|
|
|
|
+ if (newSnapshotHeight > Self.kMinSidePaneWidth) {
|
|
self.snapshotNormalZoomInButton.isEnabled = false
|
|
self.snapshotNormalZoomInButton.isEnabled = false
|
|
} else {
|
|
} else {
|
|
self.snapshotNormalZoomInButton.isEnabled = true
|
|
self.snapshotNormalZoomInButton.isEnabled = true
|
|
@@ -1232,7 +1210,10 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
func tableViewSelectionIsChanging(_ notification: Notification) {
|
|
func tableViewSelectionIsChanging(_ notification: Notification) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
func tableViewSelectionDidChange(_ notification: Notification) {
|
|
func tableViewSelectionDidChange(_ notification: Notification) {
|
|
|
|
+ self.delegate?.controller?(controller: self, listViewSelectionDidChange: notification.object, info: nil)
|
|
|
|
+
|
|
if self.findTableView.isEqual(to: notification.object) {
|
|
if self.findTableView.isEqual(to: notification.object) {
|
|
// [self updateFindResultHighlightsForDirection:NSDirectSelection];
|
|
// [self updateFindResultHighlightsForDirection:NSDirectSelection];
|
|
let row = self.findTableView.selectedRow
|
|
let row = self.findTableView.selectedRow
|
|
@@ -1245,11 +1226,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
} else if self.groupedFindTableView.isEqual(to: notification.object) {
|
|
} else if self.groupedFindTableView.isEqual(to: notification.object) {
|
|
// [self updateFindResultHighlightsForDirection:NSDirectSelection];
|
|
// [self updateFindResultHighlightsForDirection:NSDirectSelection];
|
|
} else if self.thumbnailTableView.isEqual(to: notification.object) {
|
|
} else if self.thumbnailTableView.isEqual(to: notification.object) {
|
|
- let row = self.thumbnailTableView.selectedRow
|
|
|
|
- let curPage = self.currentPageIndex()
|
|
|
|
- if (row != -1 && row != curPage) {
|
|
|
|
- self.listView?.go(toPageIndex: row, animated: true)
|
|
|
|
- }
|
|
|
|
self.thumbnailTableView.ks_reloadData()
|
|
self.thumbnailTableView.ks_reloadData()
|
|
} else if self.snapshotTableView.isEqual(to: notification.object) {
|
|
} else if self.snapshotTableView.isEqual(to: notification.object) {
|
|
let row = self.snapshotTableView.selectedRow
|
|
let row = self.snapshotTableView.selectedRow
|
|
@@ -1264,7 +1240,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
controller?.window?.orderFront(self)
|
|
controller?.window?.orderFront(self)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-// self.snapshotTableView.reloadData()
|
|
|
|
self.snapshotTableView.ks_reloadData()
|
|
self.snapshotTableView.ks_reloadData()
|
|
}
|
|
}
|
|
}
|
|
}
|