【iOS】知乎日报第二周总结

一. 关于轮播图定时器的一些bug

在写自动轮播图时,定时器在手动拖拽轮播图时需要停止计时器,在结束拖拽后,在重新启动定时器。然而NSTime并没有停止和重新启动的属性,只有销毁定时器。所以所谓的停止计时器的功能就得依靠销毁来实现,而重新启动就意味着重新定义一遍该定时器。就达到了停止与启动的效果。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    if (scrollView.tag == 334) {
    	//停止计时器
        [_scrollViewTimer invalidate];
    }
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (scrollView.tag == 333) {
    	//重新启动定时器
        _homeView.scrollViewTimer = [NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(autoRepeat) userInfo:nil repeats:YES];
    }
}
  • 后来写了一组tableViewCell后发现出现了新的问题,因为我的自动轮播图是写在tableView的第一行单元格上的,而tableView本身也是属于ScrollView。所以在调用滚动视图的代理函数时,要进行tag值的判断来决定在哪个控件上执行该协议函数。
  • 在解决上述问题后,当我拖动tableView向下拉时,整个屏幕会变成空白。查询可得,在写轮播图的时候,轮播图下面的UIScrollView的代理对象不能是MVC中的V,否则代码执行到协议事件函数时tableView若手动滑动整个View界面就会崩溃。由此看见,MVC设计模式的条理是十分清晰的,Controller中就应该来负责与用户交互或者与View的点击事件通信的。

二. 关于刷新新数据

我的想法是在tableView的最后添加一个空白单元,这个单元格上就写那个刷新控件(小菊花)

	self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyleLarge)];
    //设置小菊花的frame
    self.activityIndicator.frame = CGRectMake(SIZE_WIDTH / 2, 20, 15, 15);
    //设置小菊花颜色
    self.activityIndicator.color = [UIColor blackColor];
    //设置背景颜色
    self.activityIndicator.backgroundColor = [UIColor clearColor];
    //刚进入这个界面会显示控件,并且停止旋转也会显示,只是没有在转动而已,没有设置或者设置为YES的时候,刚进入页面不会显示
    self.activityIndicator.hidesWhenStopped = YES;
  • 当我拉动tableView时,如果我的拉到最后一行单元格(也就是显示小菊花的那行)时(需要判断坐标),我就开始进行旧数据的网络请求,利用通知传值将旧数据从Controller传输到View上。当网络请求成功时,我将单元格最后一行(有小菊花)之前的位置增加7行单元格,然后再进行刷新数据就 ok了。
  • 这里要注意,当我们刷新tableView时,一定要放在主线程里进行。
		NSLog(@"-----接收到更新过往记录通知------");
        // 异步执行任务创建方法
        dispatch_async(dispatch_get_main_queue(), ^{
            self.homeView.beforeCellNumber += 7;
            [self.homeView.homeTableView reloadData];
        });

三. 关于设置网络图片

iOS-SDWebImage的使用和实现原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值