zoukankan      html  css  js  c++  java
  • iOS基础-高级视图-UITableView--实例:app管理

    不利用xib而是利用storyboard里的默认动态cell来描述自定义cell
    一、在第三个数据源方法中加载cell

    {
    MJAppCell *cell = [tableView dequeueReusableCellWithIdentifier:@"app"];
    //将模型数据传给cell的时候会调用set方法,在set方法中覆盖按钮的数据和状态即可
    cell.app = self.apps[indexPath.row]; 
    return cell;
    }

    PS:一个TableView可以备份多种类型的cell,到时候只需要根据不同标识加载cell即可
    二、在MJAppCell.h中添加模型数据属性并重写set方法

    //这个MJApp是事先准备好直接拖过来的,里面有app的icon,name,size,download属性。 
    @property(nonatomic,strong)MJApp *app;
    //在set方法中将app的这些属性赋值给cell的相应控件。
    -(void)setApp:(MJApp *)app
    {
    _app = app;
    self.iconView.image = [UIImage imageNamed:app.icon];
    self.nameView.text = app.name;
    self.introView.text = [NSString stringWithFormat:@" 大小: %@ | 下载量:% 
    @",app.size,app.download];
    }

    三、点击下载按钮后显示已下载,并且按钮不能再被点击
    1.将Disabled时的文字设置为已下载
    2.在MJApp模型中添加一条属性
    @property(nonatomic,assign,getter = isDownloaded)BOOL downloaded;
    3.监听下载按钮并实现方法

    //点击了下载按钮
    -(IBAction)downloadClick:(UIButton *)btn{
    //让按钮失效
    self.app.downloaded = YES;
    btn.enabled = NO;
    
    //2.通知代理
    }

    4.拿到下载按钮,在set方法中覆盖按钮的状态

    -(void)setApp:(MJApp *)app
    {
       ......
      // 覆盖按钮的状态
      self.downloadView.enabled = (self.app.isDownloaded == NO);
    }

    5.添加一个下载成功的提示
    1>定义协议并遵守协议

    @protocol MJAppCellDelegate <NSObject>
    @optional
    -(void)appCellDidClickedDownloadBtn:(MJAppCell *)cell;
    @end
    @property (nonatomic,weak) id<MJAppCellDelegate> delegate;

    2>在下载按钮的方法中通知代理按钮被点击了

    -(IBAction)downloadClick:(UIButton *)btn
    {
       ....
      //2.通知代理
      if([self.delegate respondsToSelector:@selector 
      (appCellDidClickedDownloadBtn:)]){
      [self.delegate appCellDidClickedDownloadBtn:self];
       } 
    }

    3>在第三个数据源方法中将控制器设置为代理,并让控制器遵守代理协议
    4>实现cell 的代理方法

    PS:什么时候用代理呢?
    当一个View内部发生了一些事情,想告诉控制器的时候

  • 相关阅读:
    洛谷—— P3353 在你窗外闪耀的星星
    洛谷—— P1238 走迷宫
    洛谷—— P1262 间谍网络
    9.8——模拟赛
    洛谷—— P1189 SEARCH
    算法
    May 22nd 2017 Week 21st Monday
    May 21st 2017 Week 21st Sunday
    May 20th 2017 Week 20th Saturday
    May 19th 2017 Week 20th Friday
  • 原文地址:https://www.cnblogs.com/marshall-yin/p/4760027.html
Copyright © 2011-2022 走看看