MultivaluedSection類在不同Eureka源中不同行為的分析和修正
阿新 • • 發佈:2018-12-13
Eureka中含有MultivaluedSection類,用來實現Section的編輯功能,這裡編輯是指:對Row的刪除,排序和插入.
但是本貓發現Eureka在CocoaPods和GitHub中同樣的4.2.0版本,其刪除行為卻不太相同,這可能對新手有所困惑,所以這裡做一些解釋,對自己和別人都有幫助.
這裡所謂的刪除行為不同是指:
- CocoaPods 4.2.0:啟用編輯模式後,點選Row頭部的圓形刪除按鈕無反應
- GitHub Demo 4.2.0:可以正常刪除Row
為了測試,將Demo單獨拎出來,然後重新和CocoaPods中的Eureka 4.2.0繫結,結果發現這時也無法觸發刪除功能.
所以應該是Eureka兩個源中的實現有出入.
為了能夠在CocoaPods的Eureka中實現刪除功能,我們必須手動為每個Row建立刪除動作:
for tag in nameList { section <<< TextRow { $0.placeholder = "Tag Name" $0.value = tag let deleteAction = SwipeAction(style: .destructive, title: "DEL"){action,row,completion in //Custom delete code... completion?(true) } $0.trailingSwipe.actions = [deleteAction] } }
注意completion閉包會幫你處理介面上的刪除(實參為true時),所以你只需處理定製的刪除程式碼.
而對於GitHub中的4.2.0來說,你可以不用寫任何刪除動作就可以完成介面上的刪除動作.不過如果我還要完成一些定製的刪除程式碼呢?
這時我們可以通過過載以下方法來完成:
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { super.tableView(tableView, commit: editingStyle, forRowAt: indexPath) if editingStyle == .delete{ //Custom delete code... } }
至於Eureka兩個源為什麼對於刪除行為有所不同,時間原因沒有細究,感興趣的童鞋可以仔細深入研究.
另外GitHub裡Eureka 4.3.0已經放出,支援iOS 12和Swift 4.2,大家可以下載測試.
感謝觀賞,國慶快樂 ?