项目总结-6

作者: MarceauHe | 来源:发表于2016-04-15 10:57 被阅读103次

如何监听某个控件(继承自UIControl)的一些行为或者事件?

  • 1.如果能直接拿到该控件,直接给该控件添加target进行监听
  • 2.如果不能拿到该控件,可以尝试成为该控件的父控件的代理
  • 3.如果2还行不通(可能该控件的父控件没有代理),可以尝试成为控制器的代理
以监听UITabBarButton的点击为例
  • 1.因为我们可以直接拿到导航条中的tabBarButton,所以可以直接给tabBarButton添加target进行监听
  • 2.假设tabBarButton不能直接拿到,可以尝试成为tabBarButton 的父控件UITabBar的代理,发现UITabBarController已经是tabBar的代理,我们不能去修改其代理属性,不然就会使程序崩掉.现在我们想要监听tabBarButton的点击其实很简单,只要在UITabBarController中实现- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item这个代理方法,就能够监听到tabBarButton的点击
  • 3.假设UITabBar没有代理属性,可以尝试着去找UITabBarController是否有代理属性,只要成为了UITabBarController的代理,是不是就能够监听到tabBarButton的点击?事实验证确实能够监听.

估算高度

 1.优点
 1> 减少heightForRowAtIndexPath方法的调用次数
 2> 可以让暂时看不见的cell的高度延迟计算
 
 2.缺点
 1> contentSize的不太准确的
 2> 滑动过程中,滚动条的长度会变来变去(可能会有跳跃效果)
 
 heightForRowAtIndexPath方法的调用时刻
 一.如果没有设置估算高度estimatedRowHeight
 1.每当reloadData时,有多少条数据,就会调用多少次这个方法(比如一共有100条数据,就会调用100次这个方法)
 2.每当有cell出现时,就会调用一次这个方法
 
 二.如果设置了估算高度estimatedRowHeight
 1.每当有cell出现时,就会调用一次这个方法

addObject:和addObjectsFromArray:的区别

self.topics = @[20, 19, 18]
moreTopics = @[17, 16, 15]

self.topics = @[20, 19, 18, @[17, 16, 15]]
[self.topics addObject:moreTopics];

self.topics = @[20, 19, 18, 17, 16, 15]
[self.topics addObjectsFromArray:moreTopics];

服务器分页的做法

服务器数据库的数据 = @[23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10]


第1页数据 == @[20, 19, 18, 17, 16]

做法1:
发送page参数 : page=2
第2页数据 == @[18, 17, 16, 15, 14]

做法2:
发送maxid参数 : maxid=16
第2页数据 == @[15, 14, 13, 12, 11]

集成MJRefresh

self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewTopics)];
[self.tableView.mj_header beginRefreshing];

self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreTopics)];

利用AFN取消请求

// 取消所有请求
for (NSURLSessionTask *task in self.manager.tasks) {
    [task cancel];
}

// 取消所有请求
[self.manager.tasks makeObjectsPerformSelector:@selector(cancel)];

// 关闭NSURLSession + 取消所有请求
// NSURLSession一旦被关闭了, 就不能再发请求
[self.manager invalidateSessionCancelingTasks:YES];

// 注意: 一个请求任务被取消了(cancel), 会自动调用AFN请求的failure这个block, block中传入error参数的code是NSURLErrorCancelled

UIAlertController

UIAlertController *controller = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];

[controller addAction:[UIAlertAction actionWithTitle:@"收藏" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了[收藏]按钮");
}]];

[controller addAction:[UIAlertAction actionWithTitle:@"举报" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了[举报]按钮");
}]];

[controller addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了[取消]按钮");
}]];

//    [controller addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
//        textField.textColor = [UIColor redColor];
//    }];

[self.window.rootViewController presentViewController:controller animated:YES completion:nil];

相关文章

  • 项目总结-6

    如何监听某个控件(继承自UIControl)的一些行为或者事件? 1.如果能直接拿到该控件,直接给该控件添加tar...

  • 基于Python的嘤熊联萌-MF版票务查询系统 课程报告+项目源

    目录 项目背景及意义 - 2 - 项目亮点 - 3 - 项目的实现 - 6 - 项目分析以及项目总结 - 17 -...

  • 求职准备

    1:知识点总结 2:项目总结 3:常见面试问题总结 4:公司筛选 5:安排面试行程 6:面试!!!

  • babel6 升级总结

    随着越来越多的库升级至 babel6,将项目升级至 babel6 迫在眉睫。在这里总结将 项目升级至 babel6...

  • 每周读书总结

    每周读书总结 读书总结第二十六周 时间:10.23-10.29 数量:个人分享6篇 主题: 项目开发管理 【读书总...

  • 每周读书总结 - 草稿

    读书总结第十九周 时间:9.04-9.10 数量:个人分享6篇 朋友圈分享1 主题: 项目开发管理 【读书总结】 ...

  • 20181128学习时间总结无结果勿争取勿打扰

    20181127学习时间 6:00-7:30python项目实操总结 6:00-7:15分析python分析步骤。...

  • 每周读书总结

    读书总结第二十七周 时间:10.29-10.05 数量:个人分享6篇 主题: 项目开发管理 【读书总结】 在六大能...

  • 《项目管理经验总结》 01-Double Check

    2016/6/11 监控-项目经验总结-Double Check 作者:红牌后卫 经验:1. 凡是不要拖拉,拖拉必...

  • 项目总结-园区项目总结

    今年是自己进入这个行业的第一年,做的第一个项目,项目时间:4月21日-11月8日。总结一下想到的问题,为日后作参考...

网友评论

    本文标题:项目总结-6

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