在逻辑上(表关系)将Team和Player关联起来后,我们将其展现到UI视图上。
首先,为App添加导航栏:
- @interface AppDelegate : UIResponder <UIApplicationDelegate >
- @property (strong, nonatomic) UIWindow *window;
- @property (strong, nonatomic) UINavigationController *navController;
- @property (strong, nonatomic) ViewController *viewController;
- @end
- @implementation AppDelegate
- - (void)dealloc
- {
- [_window release];
- [_navController release];
- [_viewController release];
- [super dealloc];
- }
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
- // Override point for customization after application launch.
- self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
- self.navController = [[[UINavigationController alloc] initWithRootViewController:self.viewController] autorelease];
- self.window.rootViewController = self.navController;
- [self.window makeKeyAndVisible];
- return YES;
- }
然后在ViewController上添加一个UITableView,布局好并实现如下相应的代理函数:
- #pragma mark -
- #pragma mark - UITableView DataSource
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 1;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return [self.teamArray count];
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *cellIdentifier = @"TeamTableViewCellIdentifier";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
- if (nil == cell) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];
- }
- Team *teamObject = [self.teamArray objectAtIndex:indexPath.row];
- UIImage *nbaImage = [UIImage imageNamed:@"nba@2x.jpg"];
- cell.imageView.image = nbaImage;
- cell.imageView.backgroundColor = [UIColorredColor];
- cell.textLabel.text = teamObject.name;
- cell.detailTextLabel.text = teamObject.city;
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- return cell;
- }
- #pragma mark -
- #pragma mark - UITableView Delegate
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
- Team *teamObject = [self.teamArray objectAtIndex:indexPath.row];
- PlayerListViewController *playerListVC = [[[PlayerListViewController alloc] init] autorelease];
- playerListVC.team = teamObject;
- playerListVC.cdViewController = self;
- [self.navigationController pushViewController:playerListVC animated:YES];
- }
在插入一些球队信息后,可以得到如下效果(按球队名称排序):
- - (NSArray *)fetchTeamList
- {
- NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
- NSEntityDescription *teamEntity = [NSEntityDescription entityForName:@"Team" inManagedObjectContext:self.managedObjectContext];
- [fetchRequest setEntity:teamEntity];
- NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name"ascending:YES];
- [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
- NSError *error = NULL;
- NSArray *array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
- if (error) {
- NSLog(@"Error : %@\n", [error localizedDescription]);
- }
- [fetchRequest release], fetchRequest = nil;
- return array;
- }
点击cell,就进入到该队的球员列表:
- - (NSArray *)fetchPlayerList
- {
- NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
- NSEntityDescription *teamEntity = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:self.cdViewController.managedObjectContext];
- [fetchRequest setEntity:teamEntity];
- NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"age"ascending:YES];
- [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"team == %@", self.team];
- [fetchRequest setPredicate:predicate];
- NSError *error = NULL;
- NSArray *array = [self.cdViewController.managedObjectContext executeFetchRequest:fetchRequest error:&error];
- if (error) {
- NSLog(@"Error : %@\n", [error localizedDescription]);
- }
- [fetchRequest release], fetchRequest = nil;
- return array;
- }
通过导航栏右边的Add按钮来添加球员信息:
- - (IBAction)addBtnDidClick:(id)sender
- {
- // We don't check the user input.
- Player *playerObject = [NSEntityDescription insertNewObjectForEntityForName:@"Player" inManagedObjectContext:self.cdViewController.managedObjectContext];
- playerObject.name = self.nameTextField.text;
- playerObject.age = [NSNumber numberWithInteger:[self.ageTextField.text integerValue]];
- playerObject.team = self.team;
- [self.cdViewController saveContext];
- [self dismissModalViewControllerAnimated:YES];
- }
- - (IBAction)cancelBtnDidClick:(id)sender
- {
- [self dismissModalViewControllerAnimated:YES];
- }
以上对NSManagedObject的操作都位于同一份NSManagedObjectContext中。如上面添加球员的函数addBtnDidClick:所注释的,添加球员信息时并没有对数据进行验证 —— 这将在下一篇讨论。
相关推荐
在iOS开发中,UITableView是应用最广泛的一种控件,它被用来展示列表或者表格数据,类似于Android中的ListView。本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其...
在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示列表或表格数据。当我们需要创建类似iBooks的图书列表样式时,自定义UITableViewCell就显得尤为关键。本篇将详细介绍如何在UITableView中自定义...
UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的控件,本文将详细介绍 UITableView 的...
在iOS应用开发中,UITableView是不可或缺的组件,用于展示列表数据。本教程将深入探讨UITableView的使用,特别是针对iPhone应用开发。在第一部分中,我们将着重理解UITableView的基本概念,设置数据源,创建自定义...
### UITableView教材:构建与操作教程 #### 一、Table的整个框架搭建 ##### 1、两种样式的初始化 UITableView 提供了两种不同的样式:`UITableViewStylePlain` 和 `UITableViewStyleGrouped`。这两种样式的选择取...
在iOS开发中,UITableView是一个非常重要的组件,它用于展示数据列表,常见的比如应用中的联系人列表、邮件列表等。这个标题“代码实现UITableView与UITableViewCell”指的是如何通过编程方式设置和管理UITableView...
UITableView是iOS应用开发中不可或缺的一部分,特别是在Swift编程环境中。它是一种用于显示大量数据的视图控件,可以灵活地展示列表或表格形式的信息。在Swift中,UITableView的使用涉及到多个知识点,包括数据源...
在iOS开发中,UITableView是应用最广泛的控件之一,它用于展示列表或表格形式的数据。在本教程中,我们将深入探讨如何使用Objective-C实现UITableView的基本功能,并探讨性能优化策略。 首先,我们来看一下如何创建...
在iOS开发中,UITableView是一种非常重要的UI组件,用于展示列表数据。本教程将深入探讨如何在UITableView中设置数据,特别是当结合Navigation Controller进行视图切换时。我们将通过一个实例来阐述这一过程,这个...
在iOS开发中,UITableView是一个非常重要的组件,它用于展示列表数据,如联系人、邮件、应用列表等。这篇教程将深入探讨UITableView的核心概念,并通过一个实际案例——CarShow,来帮助你更好地理解和运用这个控件。...
在iOS开发中,UITableView是用于展示列表数据的关键组件。当你想要实现一个功能,让用户通过横向滑动表格单元格来触发特定事件时,可以利用UITableView的 Delegate 和 DataSource 方法。标题"UITableView手指横向...
在iOS开发中,UITableView是一种常用的组件,用于展示列表或表格数据。在实际应用中,我们经常需要在UITableView的单元格中加载图片,以提供丰富的视觉体验。本示例项目"UITableView加载图片 官方范例"就是针对这个...
在iOS开发中,UITableView是一个至关重要的组件,用于展示列表数据,比如应用的主菜单、联系人列表或消息对话。Objective-C是苹果生态系统中用于开发iOS应用程序的主要编程语言,所以掌握UITableView在Objective-C中...
在iOS开发中,UITableView是展示数据列表的一种常见控件,用户可以滚动浏览并进行交互。在实际应用中,我们经常需要实现对UITableView中的单元格(Cell)进行删除操作。本Demo代码着重展示了如何在UITableView中删除...
在iOS开发中,UITableView是一个至关重要的组件,它用于展示数据列表,常见的如联系人列表、邮件收件箱等。这个“iOS基础——通过案例学知识之UITableView”主题将引导我们深入理解如何有效地使用UITableView来构建...
在Swift编程语言中,`UITableView`是iOS应用开发中不可或缺的一部分,它用于展示列表或表格数据,例如联系人、邮件列表等。`UITableView`控件是用户界面中的一个核心组件,能够有效地显示大量数据,并允许用户进行...
在iOS开发中,UITableView是应用最广泛的控件之一,它用于展示列表数据,常用于创建各种类型的应用界面,如联系人列表、邮件收件箱等。这个笔记将深入探讨UITableView的使用及其与索引条(Index)的结合,帮助开发者...
在iOS开发中,`UITableView` 是一种常用的组件,用于展示列表型数据。当我们需要在一个`UITableView`中显示两列数据时,通常会涉及到布局、数据源处理和自定义单元格等技术。以下将详细讲解如何实现这个功能。 首先...
在iOS开发中,UITableView是一种常用的数据展示控件,用于显示多行可滚动的数据。然而,在实际应用中,我们经常遇到的一个问题是如何实现UITableView的高度自适应,即让每一行cell的高度根据其内容动态调整。本教程...
在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。本教程将深入讲解如何在UITableView中实现快捷菜单的使用,特别是涉及到Cell的粘贴功能。这将帮助开发者提高用户界面的交互性和功能多样性。 ...