我是初学者在Xcode编码。 我想要得到的是从plist的sectionview中加载tableview。 而我的问题是在我的部分正确放置行。Xcode:问题与表中的部分
在我的plist中,我在每个条目中都有我的部分名称,但我不知道如何获取这些信息。所以我通过代码添加了我的两部分的名字。
我的plist这个样子的:
<dict>
<key>Root</key>
<array>
<dict>
<key>DESCRIPTION</key>
<string>Robe ponctuée de petites tâches sombres plus ou moins rondes et pleines tel que l'on retrouve chez le guépard</string>
<key>TITLE</key>
<string>Spotted</string>
<key>IMAGE</key>
<string></string>
<key>MINI</key>
<string>spotted.png</string>
<key>CAT</key>
<string>MOTIFS</string>
</dict>
<dict>
<key>DESCRIPTION</key>
<string>Robe ponctuée de taches plutôt rondes offrant deux tons contrastants. Le centre de celles-ci se voulant plus clair et le pourtour plus sombre. On appelle rosette ouverte une tâche qui n'est pas totalement cerclée par le pourtour plus foncé et rappelant la forme d'un croissant de lune. </string>
<key>TITLE</key>
<string>Rosettes ouvertes ou demi-lunes</string>
<key>IMAGE</key>
<string></string>
<key>MINI</key>
<string>roset-ouv.png</string>
<key>CAT</key>
<string>MOTIFS</string>
</dict>
,这里是我的rootcontroller.m
// RootViewController.m
// FichesRaces
//
// Created by a3116b on 28/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "RootViewController.h"
#import "FichesRacesAppDelegate.h"
#import "CatsList.h"
#import "DetailViewController.h"
#import "NewsCustomCell.h"
#import "InfoViewController.h"
@implementation RootViewController
@synthesize tabWebSites;
- (void)viewDidLoad {
[super viewDidLoad];
// Charger le fichier .plist dans un tableau que l'on appelera arrayFromFile
NSString *path = [[NSBundle mainBundle] pathForResource:@"cats" ofType:@"plist"];
NSDictionary *dictFromFile = [[NSDictionary alloc] initWithContentsOfFile:path];
NSArray *arrayFromFile = [dictFromFile objectForKey:@"Root"];
// Créons un tableau temporaire que nous allons remplir avec un objet Website par NSDictionnary contenu dans le fichier .plist
// Notez l'utilisation de NSEnumerator pour parcourir un tableau
NSMutableArray *websitesToAdd = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [arrayFromFile objectEnumerator];
NSDictionary *anObject;
while ((anObject = [enumerator nextObject])) {
CatsList *cl = [[CatsList alloc] initWithDictionaryFromPlist: anObject];
[websitesToAdd addObject: cl];
[cl release];
}
// Remplir la propriété tabWebSites avec le contenu du NSMutableArray précédent
self.tabWebSites = [NSArray arrayWithArray:websitesToAdd];
// Gestion de la mémoire : pour chaque alloc, n'oubliez pas le release qui va avec !
[websitesToAdd release];
[arrayFromFile release];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
// définir hauteur cellule
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *) indexPath {
return 80;
}
// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// On n'a besoin que d'une section pour nos sites Internet
return 2;
}
//- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
// NSArray *sectionTitles = [[NSArray alloc]
// initWithObjects:@"Les Motifs", @"Les Couleurs", nil];
// return sectionTitles;
//}
- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section
{
if (section == 0) return @"Les Motifs";
if (section == 1) return @"Les Couleurs";
return @"Other";
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Nous ne tenons pas compte du numéro de section puisqu'il n'y en a qu'une
// Dans cette unique section il y a tous les éléments du tableau, on retourne donc le nombre
// return [self.tabWebSites count];
if (section == 0) return 5;
if (section == 1) return 14;
return 0;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"NewsCustomCellIdentifier";
NewsCustomCell *cell = (NewsCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"NewsCustomCell" owner:self options:nil];
for (id oneObject in nib) {
if ([oneObject isKindOfClass:[NewsCustomCell class]])
cell = (NewsCustomCell *)oneObject;
}
}
// determine the correct row.
// it will be restarted from 0 every time, and as
// we're just loading in from one array, we need to
// offset it by the right amount depending on the section.
int theRow = indexPath.row;
if (indexPath.section == 1) theRow += 6;
if (indexPath.section == 2) theRow += 19;
// On récupère l'objet Website qui correspon à la ligne que l'on souhaite afficher
CatsList *cl = [self.tabWebSites objectAtIndex:indexPath.row];
// On configure la cellule avec le titre du site et sa description
cell.textLabel.text = cl.TITLE;
cell.detailTextLabel.text = cl.DESCRIPTION;
UIImage *img = [UIImage imageNamed:cl.MINI];
cell.imageView.image = img;
//important ajouter signalisation sinon APP REFUSE
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// On renvoie la cellule configurée pour l'affichage
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController *detailVC = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
detailVC.CL = [self.tabWebSites objectAtIndex:indexPath.row];
[self.navigationController pushViewController:detailVC animated:YES];
[detailVC release];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Relinquish ownership any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
// For example: self.myOutlet = nil;
}
- (void)dealloc
{
[super dealloc];
}
@end
感谢您的非常有用的帮助
super ces commentaires enfrançais! – 2011-07-19 06:18:07