码迷,mamicode.com
首页 > 移动开发 > 详细

蓝懿ios微博项目之自定义cell

时间:2016-02-25 22:53:52      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

/重写转发微博View的get方法  懒加载,实现了转发微博view复用

// 懒加载就是在程序运行后,不是一下子加载很多的控件,而是后期需要的时候再复用

// 懒加载的形式是重写get方法的同时,里面进行判断跟着 if(obj==nil),这种形式

//  这里的转发的微博view也要考虑view的复用问题

-(LYWeiboView *)reWeiboView{

    

    

    // if里面判断进行的时候要写成_reWeiboView,如果写self.reWeiboView,它属于_eWeiboView的get方法,get方法里面用属性的get方法取值判断会进入死循环,所以这里重写get方法时候一定要用_reWeiboView来判断是否存在

    // 注意:_reWeiboView == nil , 整体是一个get方法,

    //  self.reWeiboView = ,属于set方法;

    if (_reWeiboView == nil) {

        // 现创建一个,滴哦用的时候赋值时再定Fram

        _reWeiboView = [[LYWeiboView alloc]initWithFrame:CGRectZero];

        [self addSubview:_reWeiboView];

        self.reWeiboView.backgroundColor = LYGrayColor;

    }

    

    return _reWeiboView;

}

 

// ---------------------- 功能分区 -----------------------------

//    [LYSinaUtils requestWeibosWithParams:params Callback:^(id obj) {

//        // 请求回来的数据是一个大数组

//        self.weibos = obj;

//        // 此block是LYSinaUtils调用的方法,block里用其他对象调方法不会报错警告,如果此block方法是用tableView调用的,就会报错,报错的时候就在block方法外边用“__block”修饰一下

//        [tableView reloadData];

//    }];

    

    // ---------------------- 功能分区 -----------------------------

    

    /*

     //  等号右边的永远是fet方法,下面的self.params属于调用get方法,self.params.count属于set方法,一个等号左边最近的属性调用的是set方法

     self.params.count=@(3);

     

     */

    //    __block typeof(self) weakSelf = self;

    //    __block LYHomeViewController *weakSelf = self;

    // *** __block这里就记住,当block里要是访问属性,可能会出现报错,直接记住在外边加上__block修饰一下就好了

    //添加上拉加载和下拉刷新  在block中访问变量时 会导致内存计数+1 从而可能会引起 对象释放不掉

    //    __weak 和 __block 都可以使变量在block中使用时 内存计数不加1

    //添加下拉刷新事件

    [tableView addPullToRefreshWithActionHandler:^{

        

        //刷新的时候如果有数据,判断当前有没有微博数据。

        if (self.weibos.count>0) {

//            找到微博数据数组里的第一个[0]的就是最新的用户发的微博id

            LYWeibo *weibo = self.weibos[0];

            //获取比自己最新微博 更新微博

            self.params.since_id = weibo.wid;

        }

        [LYSinaUtils requestWeibosWithParams:self.params Callback:^(id obj) {

// 下面添加的时候系统不知道obj是什么,提前用数组接住

            NSArray *newWeibos = obj;

            //把请求到的新的数据插入到数组的最前面

            [self.weibos insertObjects:obj atIndexes:[NSIndexSetindexSetWithIndexesInRange:NSMakeRange(0, newWeibos.count)]];

            [self.tableView reloadData];

            

            //结束下拉刷新动画

            [self.tableView.pullToRefreshView stopAnimating];

            

        }];

        

    }];

    

    //添加上拉加载事件

    [tableView addInfiniteScrollingWithActionHandler:^{

        //如果是上拉加载 不能设置since_id不然拿不到数据

        // 如设置了since_idyou参数,系统就会去请求最新的数据,而不是加载之前的数据

        

        self.params.since_id = nil;

        //设置请求页数

        self.params.page = @(self.params.page.intValue+1);

        

        //上拉加载

        [LYSinaUtils requestWeibosWithParams:self.params Callback:^(id obj) {

            //把获取到的微博数组追加到数据源数组中

            [self.weibos addObjectsFromArray:obj];

            [self.tableView reloadData];

            //结束上拉加载动画

            [self.tableView.infiniteScrollingView stopAnimating];

        }];

        

    }];

 

    //触发下拉刷新

    [self.tableView triggerPullToRefresh];

 

蓝懿ios微博项目之自定义cell

标签:

原文地址:http://www.cnblogs.com/lanyisanqqi/p/5218408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!