IOS自定义TableFooterView

////---------------自定义TableFootViewDelegate类,用来管理对应的Xib文件----------------

#import <UIKit/UIKit.h>

//该协议用来规范了加载更多数据的方法(需要用到控制器中的加载更多的方法)
@protocol MLTableFooterViewDelegate <NSObject>
@optional
-(void)loadingMoreData;
@end

@interface MLTableFooterView : UIView

@property(nonatomic , weak)id<MLTableFooterViewDelegate> delegate;
//用来快速创建一个footView对象.
+(instancetype)footerView;
-(instancetype)initFooterView;

@end

#import "MLTableFooterView.h"

@interface MLTableFooterView ()
@property (weak, nonatomic) IBOutlet UIButton *loadBtn;
@property (weak, nonatomic) IBOutlet UIView *loadingView;

-(IBAction)loadBtnClick;

@end

@implementation MLTableFooterView

+(instancetype)footerView{
    return [[self alloc]initFooterView];
}
-(instancetype)initFooterView{
    
    //初始化一个nib对象(包含xib中的所有信息)-----另一种加载Xib文件的方法
    //UINib *nib = [UINib nibWithNibName:@"MLTableFooterView" bundle:nil];
    
    //返回的是xib中所有的文件的数组,因为此xib中只有一个,故用fistObject获取改自定义的View.
    //UIView *footView =  [[nib instantiateWithOwner:nil options:nil] firstObject];

    
    return [[[NSBundle mainBundle] loadNibNamed:@"MLTableFooterView" owner:nil options:nil] firstObject];
}

-(IBAction)loadBtnClick{
    //隐藏加载按钮
    self.loadBtn.hidden = YES;
    //显示正在加载的view
    self.loadingView.hidden = NO;
    
    //显示更多数据
    //使用C语言实现延时(模拟加载更多)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if ([self.delegate respondsToSelector:@selector(loadingMoreData)]) {
            //加载数据
            [self.delegate loadingMoreData];
            //显示加载按钮
            self.loadBtn.hidden = NO;
            //隐藏"正在加载"
            self.loadingView.hidden = YES;
            
        }
    });
}
@end

////------控制器中部分代码------------(需要实现协议MLTableFooterViewDelegate)
    //使用自定义的tableFooterView
    MLTableFooterView *footer = [MLTableFooterView footerView];
    footer.delegate = self;
    //将tableView的代理对象设置为当前类对象.
    self.tableView.tableFooterView = footer;
    
//实现协议的loadingMoreData方法,加载更多数据
-(void)loadingMoreData{
    //添加更多的模型数据(虚拟数据)
    MLTg *tg = [[MLTg alloc]init];//其中MLTg是我生命的一个模型类,_tgs是控制器的对象,用来存放所有的数据模型.
    tg.icon = @"ad_00";
    tg.title = @"新增加的团购数据..";
    tg.price = @"100";
    tg.buyCount = @"0";
    
    //将数据天道_tgs中
    [_tgs addObject:tg];
    //刷新表格(告诉tableView重新加载模型数据,调用tableView的reloadData)
    [self.tableView reloadData];
}
时间: 2024-08-06 12:29:09

IOS自定义TableFooterView的相关文章

IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果

拖个button继承一下  几行代码 就搞定 自用效果还行 IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果,布布扣,bubuko.com

iOS 自定义页面的切换动画与交互动画

在iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它.但是随着iOS7的到来,Apple针对开发者推出了新的工具,以更灵活地方式管理UIViewController切换. 自定义导航栏的Push/Pop动画 为了在基于UINavigationController下做自定义的动画切换,先建立一个简单的工程,这个工程的rootViewController是一个

iOS自定义转场动画实战讲解

iOS自定义转场动画实战讲解 转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completion:这一组函数以模态视图的方式展现.隐藏视图.如果用到了navigationController,还可以调用pushViewController:animated:和popViewController这一组函数将新的视图控制器压栈.弹栈. 下图中所有转场动画都是自定义的

iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar 的解决办法

iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar  的解决办法 问题:iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar 1.自定义代码: - (void)viewWillAppear:(BOOL)animated { [super  viewWillAppear:animated]; // 删除系统自动生成的UITabBarB

IOS 自定义 滑动返回 手势

/** 只需要在你自定义的导航控制器中,改成如下代码即可,自定义手势返回 */ #define KEY_WINDOW [[UIApplication sharedApplication] keyWindow] #define kScreenW KEY_WINDOW.bounds.size.width #define kAnimateDuration 0.3 #define kDefaultAlapa 0.5 #define kDefaultScale 0.95 #define iOS7 ([UI

IOS开发—IOS自定义任意位置右滑POP视图控制器

IOS自定义任意位置右滑POP视图控制器 IOS7.0之后系统提供了原生的从左边缘滑动pop出栈的方法,也可以自定义左边缘pop出栈,将在下一篇介绍,本篇介绍通过添加手势的方法实现IOS当前屏幕任意位置(非指定左边缘)右滑pop视图控制器出栈.代码如下: // // LXXPopViewController.m // 任意点右滑Pop // // Created by Lotheve on 15/6/12. // Copyright (c) 2015年Lotheve. All rights re

iOS自定义的UISwitch按钮

UISwitch开关控件 开关代替了点选框.开关是到目前为止用起来最简单的控件,不过仍然可以作一定程度的定制化. 一.创建 UISwitch* mySwitch = [[ UISwitchalloc]initWithFrame:CGRectMake(200.0,10.0,0.0,0.0)]; 是不是很奇怪,大小竟然是0.0×0.0,没错,系统会自动帮你决定最佳的尺寸,你自己写的尺寸会被忽略掉,你只要定义好相对父视图的位置就好了.默认尺寸为79 * 27. 二.显示控件 [ parrentView

iOS 自定义TabBarController zhuanzai

iOS 自定义TabBarController 一.自定义的思路 iOS中的TabBarController确实已经很强大了,大部分主流iOS应用都会采用.但是往往也不能满足全部的需求,因此需要自定义TabBar,自定义需要对系统的TabBar工作方式有很好的理解,自定义需要勇气. 自定义TabBar的原则:尽量利用系统自带TabBar,只改需要改的地方. 二.自定义TabBar的总体过程 1.先把自带的TabBar条给取消了 2.自己做一个view,上面放几个按钮,设定按钮的点击事件.并设置s

iOS自定义segue和自定义segue转场动画

自定义segue需要继承 UIStoryboardSegue类,然后重写-(void)perform;方法.在方法中可以自定义转场动画. </pre><span style="color: rgb(97, 34, 174); font-family: Courier; font-size: 18px;">CoolSegue.h文件</span><p></p><p></p><pre code_sni