Iphone 在DetailView中使用plist
我的应用程序中有这个tableview,它有一个特定的项目名称,例如“Apple”。当用户点击所选项目时,他们将被引导到detailView,该detailView可查看所选项目的图像和说明。我想用普利斯特来做这个,但我不知道怎么做。请帮帮我 我查看了一些源代码,比如iCodeBlog,但它们并没有很好地解释检索和保存。也许你们也可以参考一些更好地描述这一点的链接 这是我试过的一种方法。每个项目(橙色、苹果色)都有我想在我的detailView中显示的数据。我基本上想显示显示的数据Iphone 在DetailView中使用plist,iphone,sdk,plist,tableview,Iphone,Sdk,Plist,Tableview,我的应用程序中有这个tableview,它有一个特定的项目名称,例如“Apple”。当用户点击所选项目时,他们将被引导到detailView,该detailView可查看所选项目的图像和说明。我想用普利斯特来做这个,但我不知道怎么做。请帮帮我 我查看了一些源代码,比如iCodeBlog,但它们并没有很好地解释检索和保存。也许你们也可以参考一些更好地描述这一点的链接 这是我试过的一种方法。每个项目(橙色、苹果色)都有我想在我的detailView中显示的数据。我基本上想显示显示的数据 在plist
在plist中创建一个数组,数组中的项目数等于行数。在每个项目中创建一个名为description的字符串和一个名为image的字符串。在
didselectrowatinex:
方法中获取所选行的编号。将词典存储在NSDictionary
[myDictionary initWithDictionary:[myArray objectAtIndex:indexPath.row]]
然后调用
[myDictionary objectForKey:@“image”]
并将这些字符串传递到详图视图 在plist中创建一个数组,数组中的项目数等于行数。在每个项目中创建一个名为description的字符串和一个名为image的字符串。在
didselectrowatinex:
方法中获取所选行的编号。将词典存储在NSDictionary
[myDictionary initWithDictionary:[myArray objectAtIndex:indexPath.row]]
然后调用
[myDictionary objectForKey:@“image”]
并将这些字符串传递到详图视图 将一个
NSString
传递到详细信息视图,并基于NSString加载项,这可能是一个特定的字典名称,也可能是数组中的项
newDetailViewController.currentItem = @"Array1";
在我的详细视图中,定义:
.h
NSString *currentItem;
@property(nonatomic,retain) NSString *currentItem;
.m
@synthesize currentItem;
现在,您的detailView控制器中的currentItem
将是“Array1”,因为这是我们传递给它的内容
这完全取决于plist的设置方式,您是否使用NSArray
、NSDictionary
有很多方法可以使用此功能:
NSString *current = [NSString stringWithFormat:@"%@/%@",appDocsPath,currentItem];
NSMutableDictionary* dict = [[[NSMutableDictionary alloc] initWithContentsOfFile:current] autorelease];
从问题编辑:
使用上述示例:
aLabel.text = [dict objectForKey@"description"];
将
NSString
传递到详细信息视图并基于NSString加载项,这可能是特定的字典名称,也可能是数组中的项
newDetailViewController.currentItem = @"Array1";
在我的详细视图中,定义:
.h
NSString *currentItem;
@property(nonatomic,retain) NSString *currentItem;
.m
@synthesize currentItem;
现在,您的detailView控制器中的currentItem
将是“Array1”,因为这是我们传递给它的内容
这完全取决于plist的设置方式,您是否使用NSArray
、NSDictionary
有很多方法可以使用此功能:
NSString *current = [NSString stringWithFormat:@"%@/%@",appDocsPath,currentItem];
NSMutableDictionary* dict = [[[NSMutableDictionary alloc] initWithContentsOfFile:current] autorelease];
从问题编辑:
使用上述示例:
aLabel.text = [dict objectForKey@"description"];
下面是一个示例视图控制器,它将执行您想要的操作。我将类命名为DetailViewController,并从应用程序的资源中的Details.plist加载plist。图像也位于应用程序的资源中 DetailViewController.h
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController {
UILabel *description;
UIImageView *imageView;
NSString *selectedItem;
}
@property (nonatomic, retain) IBOutlet UILabel *description;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;
@property (nonatomic, copy) NSString *selectedItem;
@end
然后,您所要做的就是在加载视图之前更新selectedItem属性,并创建一个NIB文件,将描述标签和图像视图附加到它们的插座上。下面是一个示例视图控制器,它将执行您想要的操作。我将类命名为DetailViewController,并从应用程序的资源中的Details.plist加载plist。图像也位于应用程序的资源中 DetailViewController.h
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController {
UILabel *description;
UIImageView *imageView;
NSString *selectedItem;
}
@property (nonatomic, retain) IBOutlet UILabel *description;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;
@property (nonatomic, copy) NSString *selectedItem;
@end
然后,您只需在加载视图之前更新selectedItem属性,并创建一个NIB文件,将描述标签和图像视图附加到它们的插座上。Plists在许多情况下非常有用:
+ (NSMutableDictionary*) containerDictionary {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"ContainerGraphics.plist"];
NSMutableDictionary *plistData = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
return plistData;
}
这将从我的应用程序包中加载名为“ContainerGraphics.plist”的plist文件(属性列表)
plist文件实际上只是一个XML文件。您可以通过选择“新建文件”->“资源”->“属性列表”在Xcode中构建一个
你并没有说你不明白的是什么,所以如果有什么你觉得难以理解的具体事情,请详细说明:)
编辑:
使用您发布的plist,使用我上面的方法“加载”plist文件。
那么它就是一本NSD字典
因此,要阅读“苹果”词典,您可以:
NSDictionary *appleDictionary = [plistData objectForKey:@"Apple"];
这意味着一些东西——进入列表并检索“苹果”词典
现在,要获取图像和描述值,请执行以下操作:
NSString *imagePath = [appleDictionary objectForKey:@"image"];
NSString *descriptionString = [appleDictionary objectForKey:@"description"];
这就是它的本质
如果您有一个需要填充此数据的tableView,则有一个陷阱!
NSDictionary中的数据没有顺序。因此,不能像处理tableView的数据数组那样只引用[dictionary objectAtIndex:indexPath.row]
然后,您要做的是首先获取plistData,如我的第一个示例中所示。
(在viewDidLoad中执行此操作)。
然后从plistData字典中提取所有键-请注意,“顶级字典是特定的”、“苹果”、“橙色”等,而不是要硬编码到应用程序中的值。但是,这些词典中的词典是通用的、形象的、描述的
因此:
allKey数组现在包含用于访问plistData中NSDictionary的键(Apple、Orange等)
在cellForRowAtIndexPath方法中,您现在可以执行以下操作:
NSDictionary *dictionaryForCurrentCell = [plistData objectForKey:[allKeys objectAtIndex:indexPath.row]];
[cell.textLabel setText:[dictionaryForCurrentCell objectForKey:@"image"]];
[cell.detailLabel setText:[dictionaryForCurrentCell objectForKey:@"description"]];
希望它能有所帮助:)Plists在很多情况下都非常有用:
+ (NSMutableDictionary*) containerDictionary {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"ContainerGraphics.plist"];
NSMutableDictionary *plistData = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
return plistData;
}
这将从我的应用程序包中加载名为“ContainerGraphics.plist”的plist文件(属性列表)
plist文件实际上只是一个XML文件。您可以通过选择“新建文件”->“资源”->“属性列表”在Xcode中构建一个
你并没有说你不明白的是什么,所以如果有什么你觉得难以理解的具体事情,请详细说明:)