亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift解決UITableView空數據視圖問題的簡單方法

2020-03-09 17:31:16
字體:
來源:轉載
供稿:網友

前言

UITableView在現如今的APP中已經成為必不可少的一個控件,所以今天給大家帶來UITableView在Swift中是如何實現的,下面這篇文章主要給大家介紹了關于Swift解決UITableView空數據視圖的相關內容,下面話不多說了,來一起看看詳細的介紹吧

tableView空數據問題

一般項目中tableView若數據為空時會有一個提示示意圖

為了更好的管理這種提示示意圖,筆者利用extension進行了簡單的拓展

解決思路

利用swift面向協議的特點,使用協議來進行設置。

  • 設計空視圖協議
  • tableView設置空視圖代理
  • 每次重繪tableView時判斷添加或移除空數據提示圖

Swift,UITableView,空數據,視圖

具體實現

空視圖協議,遵守協議必須實現showEmtpy屬性

private let EmptyViewTag = 12345;protocol EmptyViewProtocol: NSObjectProtocol {  ///用以判斷是會否顯示空視圖 var showEmtpy: Bool {get}  ///配置空數據提示圖用于展示 func configEmptyView() -> UIView?}extension EmptyViewProtocol {  func configEmptyView() -> UIView? {  return nil }}

tableView擴展配置,實現空數據示意圖展示判斷

DispatchQueue.once和BQTool.exchangeMethod是只執行一次方法交換操作,具體實現可看源碼

 func setEmtpyViewDelegate(target: EmptyViewProtocol) {  self.emptyDelegate = target  DispatchQueue.once(#function) {   BQTool.exchangeMethod(cls: self.classForCoder, targetSel: #selector(self.layoutSubviews), newSel: #selector(self.re_layoutSubviews))  } } @objc func re_layoutSubviews() {  self.re_layoutSubviews()    if self.emptyDelegate!.showEmtpy {      guard let view = self.emptyDelegate?.configEmptyView() else {    return;   }      view.tag = EmptyViewTag;   self.addSubview(view)     } else {      guard let view = self.viewWithTag(EmptyViewTag) else {    return;   }   view .removeFromSuperview()  } } //MARK:- ***** Associated Object ***** private struct AssociatedKeys {  static var emptyViewDelegate = "tableView_emptyViewDelegate" }  private var emptyDelegate: EmptyViewProtocol? {  get {   return (objc_getAssociatedObject(self, &AssociatedKeys.emptyViewDelegate) as! EmptyViewProtocol)  }  set (newValue){   objc_setAssociatedObject(self, &AssociatedKeys.emptyViewDelegate, newValue!, .OBJC_ASSOCIATION_RETAIN)  } }

示例代碼

//關鍵部分代碼class ViewController: UIViewController , EmptyViewProtocol { private var datas: Array<Dictionary<String, String>>? /// 空數據提示圖 private var label: UILabel?   var showEmtpy: Bool {  get {   if let data = self.datas {    return data.count == 0   }   return true  } }  override func viewDidLoad() {  super.viewDidLoad()  let tableView: UITableView = ...  tableView.setEmtpyViewDelegate(target: self)  self.view.addSubview(tableView) }  func configEmptyView() -> UIView? {   if let view = self.label {   return view  }    let lab = UILabel(frame: CGRect(x: 100, y: 300, width: 200, height: 30))  lab.text = "this is a test"  lab.textAlignment = .center  self.label = lab    return lab }}

效果圖如下

Swift,UITableView,空數據,視圖

最后

  • 該設計較為簡單方便管理,若有不妥之處望指出
  • 相關代碼請前往swiftCustomControl 查看

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频久久久久久久| 97精品欧美一区二区三区| 国产精品日日摸夜夜添夜夜av| www.亚洲成人| 亚洲成人精品久久久| 成人国产精品一区| 国产精品久久久久久久久久久新郎| 久久99精品久久久久久青青91| 国产精品爱久久久久久久| 中文字幕av一区二区三区谷原希美| 色诱女教师一区二区三区| 亚洲视频网站在线观看| 91精品国产综合久久香蕉的用户体验| 亚洲电影免费观看高清| 亚洲成年网站在线观看| 成人免费午夜电影| 一区二区成人av| 国产精品国产福利国产秒拍| 美乳少妇欧美精品| 亚洲香蕉伊综合在人在线视看| 亚洲精品影视在线观看| 中文字幕日韩有码| 国产一区二区丝袜| 国产精品久久久久久av福利| 国产亚洲欧美一区| 91天堂在线视频| 亚洲最大成人在线| 亚洲网站在线播放| 日本视频久久久| 自拍偷拍亚洲精品| 亚洲а∨天堂久久精品喷水| 国产精品亚洲第一区| 欧美高清在线视频观看不卡| 日韩欧美精品网址| 在线日韩中文字幕| 日韩三级影视基地| 亚洲一区二区三| 亚洲成avwww人| www亚洲欧美| 精品高清美女精品国产区| 日韩二区三区在线| 亚洲一区二区三区sesese| 久久五月天色综合| 欧美午夜激情在线| 欧美日韩国产成人高清视频| 欧美性猛交xxxx久久久| 国产噜噜噜噜久久久久久久久| 国产精品久久国产精品99gif| 美女av一区二区| 欧美中文在线视频| 日产精品99久久久久久| 欧美日韩另类在线| 欧美成人午夜激情在线| 欧美日韩xxxxx| 国产裸体写真av一区二区| 一本一本久久a久久精品牛牛影视| 欧美一级电影免费在线观看| 日韩av在线免费| 另类专区欧美制服同性| 亚洲人免费视频| 亚洲一区二区三区sesese| 久久久亚洲成人| 美乳少妇欧美精品| 久久精品中文字幕| 91在线|亚洲| 尤物tv国产一区| 国产精品稀缺呦系列在线| 国产精品第二页| 久久亚洲电影天堂| 亚洲天堂网在线观看| 亚洲成人av中文字幕| 国产精品午夜一区二区欲梦| 亚洲老头同性xxxxx| 久久久久久有精品国产| 欧美性生活大片免费观看网址| 富二代精品短视频| 国产免费一区二区三区香蕉精| 亚洲va欧美va国产综合剧情| 国产精品美女主播在线观看纯欲| 国产精品久久久久久久久借妻| 国产一区二区三区久久精品| 欧美另类极品videosbest最新版本| 欧美性生交大片免费| 美女久久久久久久久久久| 91午夜在线播放| 久久久久久久久久婷婷| 97在线免费观看视频| 91av在线不卡| 中文字幕日韩av综合精品| 91精品国产高清自在线看超| 精品久久久999| 欧美成人精品在线播放| 亚洲美女视频网| 欧洲午夜精品久久久| 日韩美女av在线| 韩国v欧美v日本v亚洲| 精品亚洲国产成av人片传媒| 久久精品在线播放| 欧美激情videoshd| 日韩免费在线电影| 国产精品视频大全| 在线看日韩av| www.xxxx精品| 久久影视电视剧凤归四时歌| 欧美理论电影在线观看| 日韩精品中文字幕在线观看| 国产精品电影久久久久电影网| 国产精品欧美亚洲777777| 国产精品久久久久久久久借妻| 亚洲一区国产精品| 欧美日韩xxx| 国产午夜精品一区二区三区| 久久91精品国产91久久跳| 久久天天躁狠狠躁夜夜爽蜜月| 国产做受69高潮| 精品亚洲国产成av人片传媒| 国产一区二中文字幕在线看| 国产在线观看精品一区二区三区| 韩国美女主播一区| 国产一区深夜福利| 欧美日韩电影在线观看| 久久久亚洲精品视频| 在线播放日韩专区| 久久av红桃一区二区小说| 欧美激情视频在线免费观看 欧美视频免费一| 欧美一区二区三区免费观看| 久久伊人精品视频| 国产大片精品免费永久看nba| 欧美亚洲另类视频| 欧美性猛交xxxx久久久| 欧美成人精品在线播放| 国产精品欧美亚洲777777| 亚洲最大的成人网| 亚洲一区制服诱惑| 久久九九精品99国产精品| 日韩在线观看免费全| 国产精品美女主播在线观看纯欲| 精品激情国产视频| 国产精品久久97| 国精产品一区一区三区有限在线| 国产成人精品综合久久久| 26uuu国产精品视频| 欧美国产一区二区三区| 自拍偷拍亚洲欧美| 亚洲欧洲日产国产网站| 国产精品视频成人| 全亚洲最色的网站在线观看| 亚洲一区二区三区乱码aⅴ| 亚洲男人天堂网站| 亚洲开心激情网| 亚洲国产精品一区二区三区| 日韩成人黄色av| 欧美精品久久久久久久久| 韩曰欧美视频免费观看| 欧美成人自拍视频| 国产亚洲精品91在线| 久久久久国产精品一区| 亚洲成人av片在线观看| 俺去了亚洲欧美日韩| 久操成人在线视频| 九九久久国产精品| 色偷偷噜噜噜亚洲男人| 日韩av免费在线观看| 亚洲福利影片在线|