tableview是什么意思 registernib有什么用

在IOS中,在storyborad中定义tableview的cell,然后在代码中加载的具体方法怎么做?_百度知道
在IOS中,在storyborad中定义tableview的cell,然后在代码中加载的具体方法怎么做?
看HM教程记得有一处是这样子做的。,然后布局好了之后再给一个标识符,希望指点一下!,然后好像是(不知道有没有记错)直接在上面对cell布局!!,就是在故事板中拖入一个tableView。 不知道谁还记得具体步骤!,最后再在代码中的数据源代理方法中加载这个cell但是具体流程和做法实在忘记了。
//@&&CommonCellId&quot:@&quot.tableView&nibWithNibNforCellReuseIregisterNib在ViewDidLoad方法里注册自定义Cell[self:@&quot:[UINib&bundle:nil]&];CommonCell&CommonCell&CommonCellId&为要注册的cell的Xib的//@&quot
有没有详细的步骤?比方说故事板中还需要做什么样的设置?有没有相关的网页有这方面的教程?如果有的话方便帮忙找找吗?谢谢。
其他类似问题
为您推荐:
ios的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Controller不是tableView的垃圾桶
招聘信息:
本文是投稿文章,作者说在前面:最近有个MVVM模式非常火热,相信它的出现是为了模块化iOS开发,其实在我看来,它始终还是MVC模式,只是一个变种罢了。(当然有人用到了响应式编程的思路颠覆了常规, 但我们今天把讨论点集中于代码的设计模式)。与其专注于说明 MVVM 的来历,不如让我们看一个典型的 iOS 是如何构建的,并从那里了解MVVM:Typical Model-View-Controller setup我们看到的是一个典型的 MVC设置。Model呈现数据,View呈现用户界面,而 View Controller调节它两者之间的交互。稍微考虑一下,虽然View 和 View Controller是技术上不同的组件,但它们几乎总是手牵手在一起,成对的。你什么时候看到一个 View能够与不同 View Controller配对?或者反过来?所以,为什么不正规化它们的连接呢?Intermediate这更准确地描述了你可能已经编写的 MVC代码。但它并没有做太多事情来解决iOS应用中日益增长的重量级视图控制器。在典型的 MVC 应用里,许多逻辑被放在View Controller里。它们中的一些确实属于View Controller,但更多的是所谓的“用于显示的逻辑”,以 MVVM 属术语来说——就是那些从Model转换数据为 View可以呈现的东西的事情,例如将一个NSDate 转换为一个格式化过的 NSString。我们的图解里缺少某些东西。某些使我们可以放置所有表示逻辑的东西。我们打算将其称为“View Model”——它位于 View/Controller与 Model之间:Model-View-ViewModel看起好多了!这个图解准确地描述了什么是 MVVM:一个 MVC 的增强版,我们正式连接了视图和控制器,并将表示逻辑从 Controller 移出放到一个新的对象里,即 View Model。MVVM 听起来很复杂,但它本质上就是一个精心优化的 MVC架构,而 MVC你早已熟悉。好了, 引言说完了, 这是一个铺垫 .如果你认为下图右边的方法全部放在ViewController里便于日后维护和扩展的话 . 你大可固执己见然后点击浏览器右上角的"×" ...屏幕快照
下午3.58.00.png当然, 关于瘦身ViewController有很多方面 . 然而今天我们讲讲从Controller中分离TableView的表示逻辑。为什么引言MVVM设计模式,也是阐述这个主要思想是相通的。 就是把"逻辑部分"尽量移到Model层, 你可以认为它是一个中间层,所谓"逻辑部分"可以是各种delegate,网络请求,缓存,数据库,coredata等等等等,而controller正是用来组织串联他们,使得整个程序走通。正文我们很容易想到把 UITableViewDataSource和UITableViewDelegate 的代码提取出来放到一个单独的类。但我发现还是有东西可以抽象出来。例如cell的生成、cell行高以及点击等等。这里我还用了block的形式使得函数能够回调。如果你对block还不太了解先。此外,如果你也重度使用.xib生成Cell,那和我封装的类会非常契合。记住我默认习惯用.xib前的文件名来定义cell的Identifier。如果你想把它用于实战,记得在xib设置cell的Identifier不要设错。处理类XTTableDataDelegate的.h#import&#import&@class&XTRootCustomCell&;
typedef&void&&&&(^TableViewCellConfigureBlock)(NSIndexPath&*indexPath,&id&item,&XTRootCustomCell&*cell)&;
typedef&CGFloat&(^CellHeightBlock)(NSIndexPath&*indexPath,&id&item)&;
typedef&void&&&&(^DidSelectCellBlock)(NSIndexPath&*indexPath,&id&item)&;
@interface&XTTableDataDelegate&:&NSObject&//1
-&(id)initWithItems:(NSArray&*)anItems
&&&&&cellIdentifier:(NSString&*)aCellIdentifier
&configureCellBlock:(TableViewCellConfigureBlock)aConfigureCellBlock
&&&&cellHeightBlock:(CellHeightBlock)aHeightBlock
&&&&&didSelectBlock:(DidSelectCellBlock)didselectBlock&;
-&(void)handleTableViewDatasourceAndDelegate:(UITableView&*)table&;
-&(id)itemAtIndexPath:(NSIndexPath&*)indexPath&;
@end注释: //1. 初始化方法: 传数据源,cellIdentifier, 三个block分别对应配置、行高和点击.//2. 将UITableViewDataSource和UITableViewDelegate设于XTTableDataDelegate//3. 默认indexPath.row对应每个dataSource .相应返回item此外, 为了更彻底, 有必要抽象出"根Cell"。#import&@interface&XTRootCustomCell&:&UITableViewCell
+&(void)registerTable:(UITableView&*)table
&&&&&&&&nibIdentifier:(NSString&*)identifier&;&//&1
-&(void)configure:(UITableViewCell&*)cell
&&&&&&&&customObj:(id)obj
&&&&&&&&indexPath:(NSIndexPath&*)indexPath&;&//&2
+&(CGFloat)getCellHeightWithCustomObj:(id)obj
&&&&&&&&&&&&&&&&&&&&&&&&&&&&indexPath:(NSIndexPath&*)indexPath&;&//&3
@end故所有cell必须是XTRootCustomCell的子类, 通过子类重写父类方法来实现新Cell .注释: //1 .不解释.//2. 根据数据源配置并绘制cell 子类务必重写该方法//3. 根据数据源计算cell的高度 子类可重写该方法, 若不写为默认值44.0#pragma&mark&-&Public
+&(void)registerTable:(UITableView&*)table
&&&&&&&&nibIdentifier:(NSString&*)identifier
&&&&[table&registerNib:[self&nibWithIdentifier:identifier]&forCellReuseIdentifier:identifier]&;
#pragma&mark&--
#pragma&mark&-&Rewrite&these&func&in&SubClass&!
-&(void)configure:(UITableViewCell&*)cell
&&&&&&&&customObj:(id)obj
&&&&&&&&indexPath:(NSIndexPath&*)indexPath
&&&&//&Rewrite&this&func&in&SubClass&!
+&(CGFloat)getCellHeightWithCustomObj:(id)obj
&&&&&&&&&&&&&&&&&&&&&&&&&&&&indexPath:(NSIndexPath&*)indexPath
&&&&//&Rewrite&this&func&in&SubClass&if&necessary
&&&&if&(!obj)&{
&&&&&&&&return&0.0f&;&//&if&obj&is&null&.
&&&&return&44.0f&;&//&default&cell&height
}那么新cell类的实现如下: 重写父类两个方法-&(void)configure:(UITableViewCell&*)cell
&&&&&&&&customObj:(id)obj
&&&&&&&&indexPath:(NSIndexPath&*)indexPath
&&&&MyObj&*myObj&=&(MyObj&*)obj&;
&&&&MyCell&*mycell&=&(MyCell&*)cell&;
&&&&mycell.lbTitle.text&=&myObj.name&;
&&&&mycell.lbHeight.text&=&[NSString&stringWithFormat:@"my&Height&is&:&%@",&@(myObj.height)]&;
&&&&cell.backgroundColor&=&indexPath.row&%&2&?&[UIColor&greenColor]&:&[UIColor&brownColor]&;
+&(CGFloat)getCellHeightWithCustomObj:(id)obj
&&&&&&&&&&&&&&&&&&&&&&&&&&&&indexPath:(NSIndexPath&*)indexPath
&&&&return&((MyObj&*)obj).height&;
}看下结果, 瘦身后的controller干净的不像实力派, 只剩下了这一个方法 .呵呵呵呵 .-&(void)setupTableView
&&&&self.table.separatorStyle&=&0&;
&&&&TableViewCellConfigureBlock&configureCell&=&^(NSIndexPath&*indexPath,&MyObj&*obj,&XTRootCustomCell&*cell)&{
&&&&&&&&[cell&configure:cell&customObj:obj&indexPath:indexPath]&;
&&&&CellHeightBlock&heightBlock&=&^CGFloat(NSIndexPath&*indexPath,&id&item)&{
&&&&&&&&return&[MyCell&getCellHeightWithCustomObj:item&indexPath:indexPath]&;
&&&&DidSelectCellBlock&selectedBlock&=&^(NSIndexPath&*indexPath,&id&item)&{
&&&&&&&&NSLog(@"click&row&:&%@",@(indexPath.row))&;
&&&&self.tableHander&=&[[XTTableDataDelegate&alloc]&initWithItems:self.list
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cellIdentifier:MyCellIdentifier
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&configureCellBlock:configureCell
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cellHeightBlock:heightBlock
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&didSelectBlock:selectedBlock]&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&[self.tableHander&handleTableViewDatasourceAndDelegate:self.table]&;
}诸多.m文件太过于冗长,我就不贴到博客了,博客主要是讲思路,思路是王道。当然如果你想深入理解,可以看源代码,我传到了github()。任何疑问或建议,欢迎留言。参考阅读
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量17423点击量11185点击量9297点击量8518点击量8483点击量7847点击量7676点击量6129点击量5712
&2015 Chukong Technologies,Inc.
京公网安备89}

我要回帖

更多关于 ios tableview 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信