`
dcj3sjt126com
  • 浏览: 1872472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Core Data浅谈系列之五 : 在UITableView中展示

    博客分类:
  • IOS
阅读更多
在逻辑上(表关系)将Team和Player关联起来后,我们将其展现到UI视图上。
 
首先,为App添加导航栏:
  1. @interface AppDelegate : UIResponder <UIApplicationDelegate >  
  2.   
  3. @property (strong, nonatomic) UIWindow *window;  
  4. @property (strong, nonatomic) UINavigationController *navController;  
  5. @property (strong, nonatomic) ViewController *viewController;  
  6.   
  7. @end  
  8.   
  9.   
  10. @implementation AppDelegate  
  11.   
  12. - (void)dealloc  
  13. {  
  14.     [_window release];  
  15.     [_navController release];  
  16.     [_viewController release];  
  17.     [super dealloc];  
  18. }  
  19.   
  20. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  21. {  
  22.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  23.     // Override point for customization after application launch.  
  24.     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];  
  25.     self.navController = [[[UINavigationController alloc] initWithRootViewController:self.viewController] autorelease];  
  26.     self.window.rootViewController = self.navController;  
  27.     [self.window makeKeyAndVisible];  
  28.     return YES;  
  29. }  
然后在ViewController上添加一个UITableView,布局好并实现如下相应的代理函数:
  1. #pragma mark -   
  2. #pragma mark - UITableView DataSource  
  3.   
  4. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
  5. {  
  6.     return 1;  
  7. }  
  8.   
  9. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  10. {  
  11.     return [self.teamArray count];  
  12. }  
  13.   
  14. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  15. {  
  16.     static NSString *cellIdentifier = @"TeamTableViewCellIdentifier";  
  17.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];  
  18.     if (nil == cell) {  
  19.         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];  
  20.     }  
  21.       
  22.     Team *teamObject = [self.teamArray objectAtIndex:indexPath.row];  
  23.     UIImage *nbaImage = [UIImage imageNamed:@"nba@2x.jpg"];  
  24.     cell.imageView.image = nbaImage;  
  25.     cell.imageView.backgroundColor = [UIColorredColor];  
  26.     cell.textLabel.text = teamObject.name;  
  27.     cell.detailTextLabel.text = teamObject.city;  
  28.     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  
  29.       
  30.     return cell;  
  31. }  
  32.   
  33. #pragma mark -   
  34. #pragma mark - UITableView Delegate  
  35.   
  36. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
  37. {  
  38.     [tableView deselectRowAtIndexPath:indexPath animated:YES];  
  39.       
  40.     Team *teamObject = [self.teamArray objectAtIndex:indexPath.row];  
  41.     PlayerListViewController *playerListVC = [[[PlayerListViewController alloc] init] autorelease];  
  42.     playerListVC.team = teamObject;  
  43.     playerListVC.cdViewController = self;  
  44.     [self.navigationController pushViewController:playerListVC animated:YES];  
  45. }  
在插入一些球队信息后,可以得到如下效果(按球队名称排序):

  1. - (NSArray *)fetchTeamList  
  2. {  
  3.     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];  
  4.     NSEntityDescription *teamEntity = [NSEntityDescription entityForName:@"Team" inManagedObjectContext:self.managedObjectContext];  
  5.     [fetchRequest setEntity:teamEntity];  
  6.       
  7.     NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name"ascending:YES];  
  8.     [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];  
  9.       
  10.     NSError *error = NULL;  
  11.     NSArray *array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];  
  12.     if (error) {  
  13.         NSLog(@"Error : %@\n", [error localizedDescription]);  
  14.     }  
  15.       
  16.     [fetchRequest release], fetchRequest = nil;  
  17.       
  18.     return array;  
  19. }  
点击cell,就进入到该队的球员列表:

  1. - (NSArray *)fetchPlayerList  
  2. {  
  3.     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];  
  4.     NSEntityDescription *teamEntity = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:self.cdViewController.managedObjectContext];  
  5.     [fetchRequest setEntity:teamEntity];  
  6.       
  7.     NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"age"ascending:YES];  
  8.     [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];  
  9.       
  10.     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"team == %@", self.team];  
  11.     [fetchRequest setPredicate:predicate];  
  12.       
  13.     NSError *error = NULL;  
  14.     NSArray *array = [self.cdViewController.managedObjectContext executeFetchRequest:fetchRequest error:&error];  
  15.     if (error) {  
  16.         NSLog(@"Error : %@\n", [error localizedDescription]);  
  17.     }  
  18.       
  19.     [fetchRequest release], fetchRequest = nil;  
  20.       
  21.     return array;  
  22. }  
通过导航栏右边的Add按钮来添加球员信息:
 
  1. - (IBAction)addBtnDidClick:(id)sender  
  2. {  
  3.     // We don't check the user input.  
  4.     Player *playerObject = [NSEntityDescription insertNewObjectForEntityForName:@"Player" inManagedObjectContext:self.cdViewController.managedObjectContext];  
  5.     playerObject.name = self.nameTextField.text;  
  6.     playerObject.age = [NSNumber numberWithInteger:[self.ageTextField.text integerValue]];  
  7.     playerObject.team = self.team;  
  8.     [self.cdViewController saveContext];  
  9.     [self dismissModalViewControllerAnimated:YES];  
  10. }  
  11.   
  12.   
  13. - (IBAction)cancelBtnDidClick:(id)sender  
  14. {  
  15.     [self dismissModalViewControllerAnimated:YES];  
  16. }  
以上对NSManagedObject的操作都位于同一份NSManagedObjectContext中。如上面添加球员的函数addBtnDidClick:所注释的,添加球员信息时并没有对数据进行验证 —— 这将在下一篇讨论。
分享到:
评论

相关推荐

    iPhone之UITableView入门

    在iOS开发中,UITableView是应用最广泛的一种控件,它被用来展示列表或者表格数据,类似于Android中的ListView。本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其...

    在UITableView中自定义UITableViewcell实现ibooks图书列表样式

    在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示列表或表格数据。当我们需要创建类似iBooks的图书列表样式时,自定义UITableViewCell就显得尤为关键。本篇将详细介绍如何在UITableView中自定义...

    UITableView、UITableView基本用法、UITableView详解

    UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的控件,本文将详细介绍 UITableView 的...

    iphone应用开发:UITableView的详细讲解(一)

    在iOS应用开发中,UITableView是不可或缺的组件,用于展示列表数据。本教程将深入探讨UITableView的使用,特别是针对iPhone应用开发。在第一部分中,我们将着重理解UITableView的基本概念,设置数据源,创建自定义...

    UITableView教材

    ### UITableView教材:构建与操作教程 #### 一、Table的整个框架搭建 ##### 1、两种样式的初始化 UITableView 提供了两种不同的样式:`UITableViewStylePlain` 和 `UITableViewStyleGrouped`。这两种样式的选择取...

    代码实现 UITableView与UITableViewCell

    在iOS开发中,UITableView是一个非常重要的组件,它用于展示数据列表,常见的比如应用中的联系人列表、邮件列表等。这个标题“代码实现UITableView与UITableViewCell”指的是如何通过编程方式设置和管理UITableView...

    UITableView

    UITableView是iOS应用开发中不可或缺的一部分,特别是在Swift编程环境中。它是一种用于显示大量数据的视图控件,可以灵活地展示列表或表格形式的信息。在Swift中,UITableView的使用涉及到多个知识点,包括数据源...

    iOS开发中UITableview控件的基本使用及性能优化方法

    在iOS开发中,UITableView是应用最广泛的控件之一,它用于展示列表或表格形式的数据。在本教程中,我们将深入探讨如何使用Objective-C实现UITableView的基本功能,并探讨性能优化策略。 首先,我们来看一下如何创建...

    UITableView 系列二 :资料的设定方式 (Navigation Controller切换视图) (实例)

    在iOS开发中,UITableView是一种非常重要的UI组件,用于展示列表数据。本教程将深入探讨如何在UITableView中设置数据,特别是当结合Navigation Controller进行视图切换时。我们将通过一个实例来阐述这一过程,这个...

    iOS基础——通过案例学知识之UITableView(中)

    在iOS开发中,UITableView是一个非常重要的组件,它用于展示列表数据,如联系人、邮件、应用列表等。这篇教程将深入探讨UITableView的核心概念,并通过一个实际案例——CarShow,来帮助你更好地理解和运用这个控件。...

    UITableView手指横向滑动触发事件

    在iOS开发中,UITableView是用于展示列表数据的关键组件。当你想要实现一个功能,让用户通过横向滑动表格单元格来触发特定事件时,可以利用UITableView的 Delegate 和 DataSource 方法。标题"UITableView手指横向...

    UITableView加载图片 官方范例

    在iOS开发中,UITableView是一种常用的组件,用于展示列表或表格数据。在实际应用中,我们经常需要在UITableView的单元格中加载图片,以提供丰富的视觉体验。本示例项目"UITableView加载图片 官方范例"就是针对这个...

    MJ-iOS-UITableView:学习UITableView

    在iOS开发中,UITableView是一个至关重要的组件,用于展示列表数据,比如应用的主菜单、联系人列表或消息对话。Objective-C是苹果生态系统中用于开发iOS应用程序的主要编程语言,所以掌握UITableView在Objective-C中...

    UITableView 删除单元格Cell Demo代码

    在iOS开发中,UITableView是展示数据列表的一种常见控件,用户可以滚动浏览并进行交互。在实际应用中,我们经常需要实现对UITableView中的单元格(Cell)进行删除操作。本Demo代码着重展示了如何在UITableView中删除...

    iOS基础——通过案例学知识之UITableView

    在iOS开发中,UITableView是一个至关重要的组件,它用于展示数据列表,常见的如联系人列表、邮件收件箱等。这个“iOS基础——通过案例学知识之UITableView”主题将引导我们深入理解如何有效地使用UITableView来构建...

    swift学习控件篇:UITableview

    在Swift编程语言中,`UITableView`是iOS应用开发中不可或缺的一部分,它用于展示列表或表格数据,例如联系人、邮件列表等。`UITableView`控件是用户界面中的一个核心组件,能够有效地显示大量数据,并允许用户进行...

    IOS UITableView及索引条源码

    在iOS开发中,UITableView是应用最广泛的控件之一,它用于展示列表数据,常用于创建各种类型的应用界面,如联系人列表、邮件收件箱等。这个笔记将深入探讨UITableView的使用及其与索引条(Index)的结合,帮助开发者...

    uitableview显示两列数据

    在iOS开发中,`UITableView` 是一种常用的组件,用于展示列表型数据。当我们需要在一个`UITableView`中显示两列数据时,通常会涉及到布局、数据源处理和自定义单元格等技术。以下将详细讲解如何实现这个功能。 首先...

    UITableView高度自适应解决方法

    在iOS开发中,UITableView是一种常用的数据展示控件,用于显示多行可滚动的数据。然而,在实际应用中,我们经常遇到的一个问题是如何实现UITableView的高度自适应,即让每一行cell的高度根据其内容动态调整。本教程...

    UITableView 快捷菜单的使用Demo

    在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。本教程将深入讲解如何在UITableView中实现快捷菜单的使用,特别是涉及到Cell的粘贴功能。这将帮助开发者提高用户界面的交互性和功能多样性。 ...

Global site tag (gtag.js) - Google Analytics