最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ios UITableView實(shí)現(xiàn)無(wú)數(shù)據(jù)加載占位圖片

 更新時(shí)間:2017年08月01日 10:00:36   作者:搬運(yùn)工開(kāi)發(fā)者  
這篇文章主要介紹了ios UITableView實(shí)現(xiàn)無(wú)數(shù)據(jù)占位圖片,具有一定的參考價(jià)值,有興趣的可以了解一下

本文介紹了ios UITableView實(shí)現(xiàn)無(wú)數(shù)據(jù)占位圖片,分享給大家,具體如下:

國(guó)際慣例,上效果圖

該效果的實(shí)現(xiàn)主要是使用runtime的交叉方法實(shí)現(xiàn),將tableView的reloadData與自定義的kk_reloadData交換。新建tableView的Category。

交換方法主要代碼

+ (void)swizzleInstanceSelector:(SEL)originalSel
      WithSwizzledSelector:(SEL)swizzledSel {

  Method originMethod = class_getInstanceMethod(self, originalSel);
  Method swizzedMehtod = class_getInstanceMethod(self, swizzledSel);
  BOOL methodAdded = class_addMethod(self, originalSel, method_getImplementation(swizzedMehtod), method_getTypeEncoding(swizzedMehtod));

  if (methodAdded) {
    class_replaceMethod(self, swizzledSel, method_getImplementation(originMethod), method_getTypeEncoding(originMethod));
  }else{
    method_exchangeImplementations(originMethod, swizzedMehtod);
  }
}

交換reloadData

+ (void)load {
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    [self swizzleInstanceSelector:@selector(reloadData) WithSwizzledSelector:@selector(kk_reloadData)];
  });
}

kk_reloadData方法,先檢查是否有數(shù)據(jù),再次kk_reloadData方法此時(shí)已使用runtime的交換方法則則實(shí)際上調(diào)用的是系統(tǒng)的reloadData方法。

- (void)kk_reloadData {
  [self kk_checkEmpty];
  [self kk_reloadData];
}

kk_checkEmpty方法

- (void)kk_checkEmpty {
  BOOL isEmpty = YES;
  id<UITableViewDataSource> src = self.dataSource;
  NSInteger sections = 1;
  if ([src respondsToSelector:@selector(numberOfSectionsInTableView:)]) {
    sections = [src numberOfSectionsInTableView:self];
  }
  for (int i = 0; i < sections; i++) {
    NSInteger rows = [src tableView:self numberOfRowsInSection:i];
    if (rows) {
      isEmpty = NO;
    }
  }
  if (isEmpty) {//數(shù)據(jù)為空,在這里添加視圖
  }else{//數(shù)據(jù)不為空,在這里一處視圖
  }
}

為了降低代碼的侵入,可以給tableView動(dòng)態(tài)添加一個(gè)View屬性即是占位圖視圖。

@property (nonatomic, strong) UIView *placeHolderView;
- (void)setPlaceHolderView:(UIView *)placeHolderView {
  objc_setAssociatedObject(self, @selector(placeHolderView), placeHolderView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (UIView *)placeHolderView {
  return objc_getAssociatedObject(self, @selector(placeHolderView));
}

kk_checkEmpty的

if (isEmpty) {//數(shù)據(jù)為空,在這里添加視圖
}else{//數(shù)據(jù)不為空,在這里一處視圖
}

修改為

if (isEmpty) {
    [self.placeHolderView removeFromSuperview];
    [self addSubview:self.placeHolderView];
  }else{
    [self.placeHolderView removeFromSuperview];
  }

以后使用的時(shí)候只需設(shè)置tableView的placeHolderView屬性即可

_tableView.placeHolderView = [[UIView alloc] init];

打完收工

github地址: https://github.com/wuzaozhou/UITableView-placeholder

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS實(shí)現(xiàn)全局懸浮按鈕

    iOS實(shí)現(xiàn)全局懸浮按鈕

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)全局懸浮按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解iOS App中圖片的線段涂鴉功能的添加方法

    詳解iOS App中圖片的線段涂鴉功能的添加方法

    這篇文章主要介紹了如何設(shè)計(jì)iOS App中圖片的線段涂鴉功能,也就是很多應(yīng)用中圖片上傳時(shí)帶有的編輯功能的基礎(chǔ),需要的朋友可以參考下
    2016-03-03
  • iOS中使用RSA加密詳解

    iOS中使用RSA加密詳解

    本文主要介紹了iOS中使用RSA加密的方法,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2016-12-12
  • 淺析iOS應(yīng)用開(kāi)發(fā)中線程間的通信與線程安全問(wèn)題

    淺析iOS應(yīng)用開(kāi)發(fā)中線程間的通信與線程安全問(wèn)題

    這篇文章主要介紹了淺析iOS應(yīng)用開(kāi)發(fā)中線程間的通信與線程安全問(wèn)題,談到了包括互斥鎖的使用等設(shè)計(jì)要點(diǎn),需要的朋友可以參考下
    2015-11-11
  • iOS開(kāi)發(fā)之如何通過(guò)PUT請(qǐng)求上傳數(shù)據(jù)

    iOS開(kāi)發(fā)之如何通過(guò)PUT請(qǐng)求上傳數(shù)據(jù)

    眾所周知一般的服務(wù)器上傳數(shù)據(jù)都是用POST請(qǐng)求,這樣通過(guò)AFNetworking的POST請(qǐng)求穩(wěn)穩(wěn)的,但是有一天遇到一個(gè)問(wèn)題,服務(wù)器上傳數(shù)據(jù)用的是PUT請(qǐng)求,發(fā)現(xiàn)用AFNetworking并不是那么好用,下面這篇文章就來(lái)講一下如何通過(guò)PUT請(qǐng)求上傳數(shù)據(jù)。有需要的朋友們可以參考借鑒。
    2016-11-11
  • IOS開(kāi)發(fā)UIButton(左邊圖片右邊文字效果)

    IOS開(kāi)發(fā)UIButton(左邊圖片右邊文字效果)

    本篇文章主要實(shí)現(xiàn)了實(shí)現(xiàn)UIButton左邊圖片,圖片后面緊跟文字效果,類似微信發(fā)現(xiàn)功能,有需要的朋友可以了解一下。
    2016-10-10
  • iOS編寫下拉刷新控件

    iOS編寫下拉刷新控件

    這篇文章主要介紹了iOS編寫下拉刷新控件的相關(guān)資料,iOS如何寫個(gè)普通的下拉刷新的控件,需要了解的朋友可以參考下文
    2016-04-04
  • iOS中3DTouch預(yù)覽導(dǎo)致TableView滑動(dòng)卡頓問(wèn)題解決的方法

    iOS中3DTouch預(yù)覽導(dǎo)致TableView滑動(dòng)卡頓問(wèn)題解決的方法

    這篇文章主要給大家介紹了關(guān)于iOS中3DTouch預(yù)覽導(dǎo)致TableView滑動(dòng)卡頓問(wèn)題解決的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)同樣遇到的朋友們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。
    2018-03-03
  • IOS 中動(dòng)畫(huà)的暫停與繼續(xù)播放的詳解

    IOS 中動(dòng)畫(huà)的暫停與繼續(xù)播放的詳解

    這篇文章主要介紹了IOS 中動(dòng)畫(huà)的暫停與繼續(xù)播放的詳解的相關(guān)資料,希望通過(guò)本文大家能理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • iOS實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器

    iOS實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論

遵义县| 蒙山县| 凤山市| 伊金霍洛旗| 吴旗县| 岳普湖县| 奉新县| 韶关市| 游戏| 大渡口区| 巴马| 阿勒泰市| 泰安市| 宣汉县| 栖霞市| 会宁县| 息烽县| 阳泉市| 龙井市| 隆安县| 塔城市| 贡嘎县| 涡阳县| 确山县| 南江县| 喜德县| 富民县| 云龙县| 阿勒泰市| 仙居县| 乌鲁木齐县| 砀山县| 出国| 建湖县| 章丘市| 南澳县| 沾益县| 江陵县| 调兵山市| 漳平市| 托克逊县|