您的位置:首页 > 产品设计 > UI/UE

IOS每天15个注意点系列之UI-tableView

2015-09-24 21:25 519 查看
<1>关于UITableViewController:它并非是必须的,我们一样可以使用viewController,只不过这样就需要手动拖入UITableView,手动设置代理协议,手动连线。它为我们提供了一种更佳简便的方式。
<2>系统默认提供的cell样式不能满足当前团购界面的需要怎么办?使用自定义的xib,创建自定义的cell类,类名与xib文件一致.由于最后需要返回UITableViewCell对象,所以这个类应该继承自UITableViewCell。xib所属类也要设置为自定义的cell类名,否则无法进行连线。
<3> 关于awakeFromNib,当nib文件被加载的时候,会发送一个awakeFromNib的消息到nib文件中的每一个对象,每一个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。也就是说通过nib文件创建view对象是执行awakeFromNib。
<4>不要直接将控制器对象传递给各种view使用,这样不方便后期修改,同时也不符合面相对象的思想。时刻想着封装的思想,尽可能让一些操作实现封装起来不让外界看到,做到对扩展开放,对修改封闭。使用xib创建cell的时候,要求cell的结构和风格统一,如果cell的元素不一致,很多时候会考虑用代码来自定义cell。tableView的数据刷新有两种方式,一种是刷新一行,修改了某一行的数据的时候使用。另一种是刷新整个tableView,添加了新的数据的时候使用。
<5>如果不使用tableVIew.tableFooterVier方式指定底部view,也可以使用UITableView的代理方法。通过UITableViewDelegate的- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection :(NSInteger)section也可以指定自定义的view做为底部view(顶部view类似一样)。同时它有一个前提就是还需要实现
      - (CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section方法来确定底部view的高度。但是这个方法的本质是设置每一组的底部view,所以它并不会显示在整个tableView的最底端,而是显示在当前屏幕的最下方。这种效果我也挺喜欢的。。。
<6>创建cell的frame框架类
创建frame框架类,在类中声明每一个子控件的frame成员,在这个类里面还有一个微博模型数据属性。同时定义cell的高度属性,添加返回frame框架模型数组的方法。
<7>static文本会从创建开始一直扣留在静态区不会释放,知道程序结束,意味着只会创建一次,分配一次地址空间
有多种方式可以获取到动态变化的cell高度,但是使用frame模型能够更方便后期的扩展,在后期的大项目中也是使用这种方式进行相关操作的。
<8>通过文本计算文本所占据的size

NSDictionary *attr=@{NSFontAttributeName:font};

    return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attr context:nil].size;

<9>UIScreen *screen=[UIScreen mainScreen

GFloat screenWith=screen.bounds.size.width;

 ]获取屏幕宽度
<10>重建cell要重写intiWithStyle方法,在里面添加自定义cell的子控件。
<11>什么事通知中心:通知中心世纪上时在程序内提供了消息广播的一种机制。一个消息传递着,吧接收到的信息,根据被捕的消息转发表,将消息转发给需要的对象。通知中心时基于观察者模式的,允许注册,删除观察者。一个NSNotificationCenter可以有许多的通知消息NSNotification,对于每一个NSNotification可以有多少观察者Observer来接受通知。
<12>一个应用程序内部只有一个通知中心实例对象(单例对象)

NSNotificationCenter *center=[NSNotificationCenter defaultCenter];

<13>设置时间

NSDate *date=[NSDate date];

    NSDateFormatter *formtter=[[NSDateFormatter alloc] init];

    //设置时间显示格式

    formtter.dateFormat=@"HH:mm";

    NSString *time=[formtter stringFromDate:date];

<14>将数据移动到最后一行

self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES];

<15>当用户拖拽tableView的时候退出键盘
- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self.view endEditing:YES];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: