• IOS 自定义代理delegate方法


    创建一个自定义代理 

    @class MJTgFooterView;
    
    /**
     1.协议名称:  控件类名 + Delegate
     2.代理方法普遍都是@optional
     3.
     */
    
    @protocol MJTgFooterViewDelegate <NSObject>
    @optional
    //可实现的代理方法
    - (void)tgFooterViewDidClickedLoadBtn:(MJTgFooterView *)tgFooterView; @end

    声明代理,外界可以进行调用(控件器)

    @property (nonatomic, weak) id<MJTgFooterViewDelegate> delegate;

    通知代理

    /**
     *  点击"加载"按钮
     */
    - (IBAction)loadBtnClick {
        // 1.隐藏加载按钮
        self.loadBtn.hidden = YES;
        
        // 2.显示"正在加载"
        self.loadingView.hidden = NO;
        
        // 3.显示更多的数据
        // GCD
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 3.0s后执行block里面的代码
            // 通知代理
            if ([self.delegate respondsToSelector:@selector(tgFooterViewDidClickedLoadBtn:)]) {
                [self.delegate tgFooterViewDidClickedLoadBtn:self];
            }
            
            // 4.显示加载按钮
            self.loadBtn.hidden = NO;
            
            // 5.隐藏"正在加载"
            self.loadingView.hidden = YES;
        });
    }

    使用代理(实现方法)controller

    @interface MJViewController () <UITableViewDataSource, MJTgFooterViewDelegate>
        // 设置footerView
        MJTgFooterView *footer = [MJTgFooterView footerView];
        footer.delegate = self;
        self.tableView.tableFooterView = footer;
    #pragma mark - MJTgFooterViewDelegate方法
    /**
     *  加载更多的数据
     */
    - (void)tgFooterViewDidClickedLoadBtn:(MJTgFooterView *)tgFooterView
    {
    #warning 正常开发:发送网络请求给远程的服务器
        // 1.添加更多的模型数据
        MJTg *tg = [[MJTg alloc] init];
        tg.icon = @"ad_01";
        tg.title = @"新增加的团购数据..";
        tg.price = @"100";
        tg.buyCount = @"0";
        [self.tgs addObject:tg];
        
        // 2.刷新表格(告诉tableView重新加载模型数据, 调用tableView的reloadData)
        [self.tableView reloadData];
    }
  • 相关阅读:
    一键安装vsftpd服务并开通ftp账户
    mysql 利用新建从库 使用 start slave until 恢复方法
    使用ThinBackup插件备份 jenkins
    docker 日志清理
    mysql5.7 MGR配置
    mysql5.7 开启增强半同步复制
    网站qps计算方法
    mysql不支持emoji表情的问题的解决方法
    网络安全
    Cronjob 简介
  • 原文地址:https://www.cnblogs.com/liuwj/p/6438825.html
Copyright © 2020-2023  润新知