Core Data浅谈系列之五 : 在UITableView中展示
来源:互联网 发布:ktv是什么意思网络语 编辑:程序博客网 时间:2024/05/20 19:19
在逻辑上(表关系)将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:所注释的,添加球员信息时并没有对数据进行验证 —— 这将在下一篇讨论。
0 0
- Core Data浅谈系列之五 : 在UITableView中展示
- Core Data浅谈系列之五 : 在UITableView中展示
- Core Data浅谈系列之五 : 在UITableView中展示
- Core Data浅谈系列之五 : 在UITableView中展示
- Core Data浅谈系列之五 : 在UITableView中展示
- Core Data浅谈系列汇总
- Core Data浅谈系列之十 : 关于数据模型中实体的属性
- Core Data浅谈系列之二 : 简单的CURD
- Core Data浅谈系列之三 : 了解NSManagedObject和NSPredicate
- Core Data浅谈系列之四 : 数据模型的版本变迁
- Core Data浅谈系列之六 : 验证用户输入
- Core Data浅谈系列之七 : 使用NSFetchedResultsController
- Core Data浅谈系列之八 : 关于并发
- Core Data浅谈系列之九 : 使用Mapping Model
- Core Data浅谈系列之二 : 简单的CURD
- Core Data浅谈系列之三 : 了解NSManagedObject和NSPredicate
- Core Data浅谈系列之四 : 数据模型的版本变迁
- Core Data浅谈系列之六 : 验证用户输入
- Handler初步学习
- 【c++】PAT (Advanced Level)1027. Colors in Mars (20)
- HttpHelper模拟登录腾讯朋友!求精
- hdu 1874 畅通工程续
- PHP CURL 并发 采集
- Core Data浅谈系列之五 : 在UITableView中展示
- Flex中HTTPService请求参数中存在中文,后台获取为乱码的解决方法
- 获取不同尺寸3.5/4.0的屏幕大小和系统ios 6/7的版本
- Core Data浅谈系列之六 : 验证用户输入
- (15)ExtJS之Ext.form.field.Spinner微调字段
- yii中的三级省市联动
- Core Data浅谈系列之七 : 使用NSFetchedResultsController
- 说说Unicode这个东东!
- 买车方案(枚举)