美文网首页iOS 开发 iOS学习
自定义高等Cell之frame

自定义高等Cell之frame

作者: vip4iPhonr | 来源:发表于2016-09-02 22:05 被阅读0次

    • 1.创建一个继承自UITableViewCell的子类,比如IZGrouponCell

      • 1.1 在IZGrouponCell.m中重写initWithStyle:reuseIdentifier:方法
        • 添加子控件
        • 设置子控件的初始化属性(比如文字颜色、字)
        //在这个方法中添加所有的子控件
            -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
                {
                    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
                        // ......
                    }
                    return self;
                }
    
    - **1.2 重写`-layoutSubviews`方法**
        >- 一定要调用`[super layoutSubviews]`
        >- 在这个方法中计算和设置所有子控件的frame
    ```objc
    //在这个方法中计算所有子控件的frame
        -(void)layoutSubviews
        {
            [super layoutSubviews];
            // ......
        }
    ```
    - **1.3 需要提供一个模型属性,重写模型的set方法,在这个方法中设置模型数据到子控件**
        >- 在IZGrouponCell.h文件中提供一个模型属性,比如IZGroupon模型
    
    @class IZGroupon;
    @interface IZGrouponCell : UITableViewCell
    /** 团购模型数据 */
    @property (nonatomic, strong) IZGroupon *groupon;
    @end
    
        >-  在IZGrouponCell.m中重写模型属性的set方法
    
    -(void)setGroupon:(IZGroupon *)groupon
    {
        _groupon = groupon;
            // .......
    }
    
    • 2.在控制器中

      • 利用registerClass...方法注册Cell类

    [self.tableView registerClass:[IZGrouponCell class] forCellReuseIdentifier:ID];

        - **给cell传递模型数据**
    
        ```objc
            - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
            {
                // 访问缓存池
                IZGrouponCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    
                // 设置数据(传递模型数据)
                cell.groupon = self.groupon[indexPath.row];
    
                return cell;
            }
    

    相关文章

      网友评论

        本文标题:自定义高等Cell之frame

        本文链接:https://www.haomeiwen.com/subject/jwrkettx.html