tableview滑动会调用scrollview方法吗

 我来答
匿名用户
2016-07-30
展开全部
scrollView:
1. 介绍scrollView一些属性
1>.要想使用scrollView必须做两件事
1).设置scrollView内容
2).设置contentSize (滚动范围)
2>.其他属性
1). contentOffset(滚动位置)
2). contentInset(额外增加的滚动区域)
3). bounces (设置UIScrollView是否需要弹簧效果)
4). crollEnabled (设置UIScrollView是否能滚动)
5). showsHorizontalScrollIndicator (是否显示水平滚动条)
6). showsVerticalScrollIndicator (是否显示垂直滚动条)
2. 代理
1>代理思想两个思想
1).监听思想:B监听A发生了什么事情
2).通知思想:A发生了一些事情,要通知B去做
2>scrollView的代理使用
1).如何成为代理(三步)
*声明协议 *设置代理对象self.scrollView.delegate = self; *实现协议方法
2).代理监听scrollView的拖拽事件
// 开始拖拽 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; // 结束拖拽 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; // scrollView滚动时执行 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
3).用代理实现缩放
*成为UIScrollView的代理() *设置缩放对象(通过viewForZoomingInScrollView方法) *设置缩放为范围(maximumZoomScale、minimumZoomScale)
3. 定时器创建两种方式
1>. self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(方法) userInfo:nil repeats:YES]; 当另一个scrollView运行时,会停止定时器的scrollView,只能执行一个scrollView.
2>. self.timer = [NSTimer timerWithTimeInterval:1.f target:self selector:@selector(方法) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
4. 自定义协议并使用
1>.定义协议(三步)
*定义protocol(两种optional[代理对象可不实现]、required[代理对象必须实现])
*增加代理属性(weak) @property (weak, nonatomic) id<LFAppInfoViewDelegate> delegate;
*给代理发消息,调用代理的方法(需要判断代理对象是否实现了该方法,不判断调用后(编译时不会)会报错) 注意:定义协议的名称命名[类名+Delegate]、协议方法的命名规范[方法名称需要去掉前缀,并且将自己作为参数]
2>.使用代理(三步)
*声明协议
*设置代理对象
*实现协议方法(本例是在代理对象[控制器] 添加一个UILabel)
tableView:
1. UITableView 需要设置数据源才能显示数据
1>.会向数据源查询一共多少组,每组多少行,每行显示什么数据
2>.数据源必须遵守UITableViewDateSource协议
3> 一共有多少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{} 第section组有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{} 每一行显示什么内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{} 第section组头部显示什么标题 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{} 第section组底部显示什么标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{} 当每一行的cell的高度不一致的时候就使用代理方法设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{} 当每一行的cell高度一致的时候使用属性设置cell的高度
self.tableView.rowHeight = 60; 可以优化内存的可变数组定义
NSMutableArray *models = [NSMutableArray arrayWithCapacity : (NSUInteger)]
2. cell常见属性
1>.cell.textLabel.text 标题
2>.cell.detailTextLabel.text 介绍
3>.cell.imageView.image 图片
4>.cell.accessoryView 辅助视图
5>.cell.accessoryView 自定义辅助视图
6>.cell.backgroundView 设置cell的背景颜色
1).通过backgroundColor 和 backgroundView都可以设置cell的背景
2).但是backgroundView 的优先级比 backgroundColor的高
3).所以如果同时设置了backgroundColor和backgroundView, backgroundView会盖住backgroundColor
7>.cell.selectedBackgroundView 设置选中状态的背景
3. UITableView常见属性
1>. tableview.separatorStyle 设置分割线样式
2>. tableview.separatorColor 设置分割线颜色 自定义颜色
[UIColor colorWithRed:色值/255.f green:色值/255.f blue:色值/255.f alpha:色值/255.f];
获取屏幕宽度: [UIScreen mainScreen].bounds.size.width;
3>. tableview.tableHeaderView 设置tableView的头部视图 一般用于放广告
4>. tableview.tableFooterView 设置tableView的底部视图 一般用于放置加载更多按钮
5>. [self.tableView reloadData]; 刷新表格 // 刷新指定行
NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0]; [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationRight];
4. 优化cell的方法
1>.先去缓存池中查找是否有满足条件的Cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
2>.如果缓存池中没有符合条件的cell,就自己创建一个Cell if (nil == cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier]; }
3>.创建Cell, 并且设置一个唯一的标记 : identifier 注 : 定义变量 NSString *identifier 推荐用 static定义静态局部变量,不推荐用宏.
4>.设置cell数据并返回cell
5. tableView代理方法
1>. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{} //当某一行被选中的时候调用
2>. - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{} //当某一行取消选中的时候调用
3>. UIAlertView的一些属性和代理方法
1). UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"修改数据" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil]; //创建一个弹窗
2). alert.alertViewStyle = UIAlertViewStyle...; //设置alert的样式, 让alert显示出uitextfield
3). UITextField *textField = [alert textFieldAtIndex:0]; //获取alert中的textfield
4). [alert show]; //显示弹窗
5). - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{} // alertView的按钮被点击的时候就会调用
6. 自定义cell两种方式
1>. 纯代码:每个cell子控件的个数和位置不一样
2>. 通过xib: cell一样且固定的界面 加载xib的方式:
1). [[[NSBundle mainBundle] loadNibNamed:@"xib名" owner:nil options:nil] firstObject];
2).UINib *nib = [UINib nibWithNibName:@"xib名" bundle:nil]; UIView *view = [[nib instantiateWithOwner:nil options:nil]firstObject]; 3>. 延迟调用 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ }); 4>.init方法只有通过代码创建控件的时候才会调用; awakeFromNib方法在控件通过xib或者storyboard创建的时候才会调用
5>. 协议规范 协议名称 : 控件名称 + Delegate 协议方法名称:控件名称去掉前缀 + 含义 在协议方法中将自己(触发发放的)控件传出去的目的是方便用于区分哪个控件触发了该方法
6>. 代码创建的子控件,添加到contentView中 [self.contentView addSubview:子控件];
7>. 计算文字宽高 CGSize *maxSize = CGSizeMake(300, MAXFLOAT); // 设置文字范围 NSDictionary *dict = @{NSFontAttributeName : font}; // 字体 // 如果将来计算的文字的范围超出了指定的范围,返回的就是指定的范围 // 如果将来计算的文字的范围小于指定的范围, 返回的就是真实的范围 CGSize size = [NSString *str boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size; // 计算文字宽高
8>.通过代码自定义cell的方法
1).新建一个继承自UITableViewCell的类
2).重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片)
3).提供2个模型 数据模型: 存放文字数据\图片数据 frame模型: 存放数据模型\所有子控件的frame\cell的高度 4).cell拥有一个frame模型(不要直接拥有数据模型)
5).重写frame模型属性的setter方法: 在这个方法中设置子控件的显示数据和frame
6).frame模型数据的初始化已经采取懒加载的方式(每一个cell对应的frame模型数据只加载一次)
7. 通知机制
1>. 通知中心(NSNotificationCenter) 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 创建通知中心 NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
2>. 一个完整的通知一般包含3个属性: - (NSString *)name; // 通知的名称 - (id)object; // 通知发布者(是谁要发布通知) - (NSDictionary *)userInfo; // 一些额外的信息(通知发布者传递给通知接收者的信息内容)
3>. 初始化一个通知(NSNotification)对象 + (instancetype)notificationWithName:(NSString *)aName object:(id)anObject; + (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo; - (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式