UITableViewDataSource的方法被苹果设计为同步的:
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我感觉这有点问题,因为在loadView方法里,一旦设置了UITableView的dataSource,上面2个delegate方法就会被调用,而且是在ui thread里调用。但是如果这时候去访问数据库的话,就会阻塞主线程
所以我的做法是在loadView方法最后,在子线程异步访问数据库,然后再次调用reloadData方法
{
BOOL loadMembersDone;
}
-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(!loadMembersDone){
return nil;
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[UITableViewCell reuseIdentifier]];
if(!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[UITableViewCell reuseIdentifier]];
}
cell.textLabel.text = [[members objectAtIndex:indexPath.row] objectForKey:@"name"];
return cell;
}
-(void) loadView
{
ContactView *view = [[ContactView alloc] initWithController:self];
self.tableView = view;
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self loadEnterprises];
[self loadMembers];
});
}
-(void) loadMembers
{
// 从数据库中读取
loadMembersDone = YES;
[self.tableView reloadData];
}
分享到:
相关推荐
编写更UITableViewDelegate和UITableViewDataSource 。 为什么要制作这个库? 在常见的iOS开发中, UITableView已成为构建具有重复元素的丰富页面的基础。 此页面例如: (对,他帮助我创建了此示例页面的设计! ...
这是一种在Swift中编写通用UITableViewDataSource的实验方法,该方法处理单元格创建和各种样板方法: func tableView ( tableView : UITableView, cellForRowAtIndexPath indexPath : NSIndexPath) -> ...
UITableViewDataSource,UITableViewDelegate中的代理方法
UITableView是iPhone中比较常用的,用的比较多的控件, 本例中说明iPhone UITableView的使用方法实例。 该实列中是手动增加UITableViewDataSource和UITableViewDelegate协议来实现的。
构建一种从数据生成表状态结构的方法。 提供的HostCell泛型使向UITableViewCell添加FunctionalTableData支持变得容易。 值得注意的功能 :hundred_points: 维护表状态的功能方法 :construction_worker: 可重用...
tableview代理数据源每次写tableview不用重复的粘贴复制数据源和代理方法。代码不适合用多变的cell,
此实例主要实现UITableViewDataSource协议中必须要实现的两个方法
UITableView的使用,UITableView所在的UIViewController声明两个delegate:UITableViewDelegate和UITableViewDataSource。
安装有两种在项目中使用此方法的方法: 将BrickView/*.{hm}复制到您的项目中与CocoaPods一起安装以编写Podfile platform :iospod 'BrickView'用法设置委托,数据源BrickView使用一种简单的方法。 它定义了一个委托和...
避免使用UITableViewDataSource和UITabBarDelegate的API带来的代码分块不方便集中式查找和修改,多个tableView集中在一起逻辑复杂. 可以使用Pod install platform :ios, '7.0' target :'The project name' do ...
思路: 基于UITableViewDataSource 数据源方法 和 UITableViewDelegate 代理方法执行的先后顺序 1.cell 持有 model对象 2.在cell 里根据内从计算所有UI控件 3.最后计算拿到最底部控件的bottom值 就是cell的最终...
这个源码是一款不错的支持网络本地图片的轮播功能,源码CustomPhotosBrowse,图片轮播,支持本地图片、网络图片,可设置参数,希望这个能够帮到大家的学习和使用。 @property(nonatomic,assign) BOOL ...
参考UITableView的UITableViewDataSource和UITableViewDelegate两个方法实现;支持五险轮播,可以加载本地图片,也可以加载网络图片,可以根据自己的需求自定义。
一个UITableViewController子类,它使您可以轻松,... 话虽这么说, JMStaticContentTableViewController可能并不适合所有人,但是如果您构建了一个完整的UITableViewController实现完整的UITableViewDataSource和UITab
它在后台隐藏了UITableViewDataSource和UITableViewDelegate方法的复杂性,因此您的代码将看起来干净,易于阅读且易于维护。 产品特点 类型安全的通用单元 函数式编程风格友好 将模型映射或查看模型到单元格的最...
参考UITableView的UITableViewDataSource和UITableViewDelegate两个方法实现;支持五险轮播,可以加载本地图片,也可以加载网络图片,可以根据自己的需求自定义 Demo地址 UITableViewDelegate /** * 当前显示cell...
它的工作原理:下方的MultiSelectionTable由一个视图和一个数据源组成,非常类似于UITableView的UITableViewDataSource / Delegate。 他们彼此了解并在彼此之间交流。 该视图由两个可配置的UITableView和分隔它们的...
TableViewDataSource ...典型的方法是在视图控制器中实现UITableViewDataSource 。 我们可以按以下部分组织内容: 标有城市图片和标题的标头; 欢迎消息和详细文本; 地点清单。 标头部分是静态的
用法在包含可滚动内容的视图控制器(即UIScrollView或包含内容的内容,如UITableView )中,实现 UIScrollViewDelegate: class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, ...
DSNestedAccordionHandler提供UITableViewDataSource和UITableViewDelegate的抽象实现,并支持嵌套表视图 # import " DSNestedAccordionHandler.h " @interface DSBeerTableViewHandler : DSNestedAccordionHandler...