好的,所以我想让用户从iphone照片中选择一张图像并将该图像保存为按钮上的图像。 当用户关闭应用程序并再次打开它时,我希望用户再次看到他保存的图像:) theButton包含点击按钮的发件人btw。
我可以做用户可以将图像作为按钮图像的部分。 我用这一行来设置图像
[theButton setImage:btnImage forState:UIControlStateNormal];
现在我想知道如何访问该按钮的图像?所以我可以保存并加载它吗?
我根据教程使用此代码,但我坚持使用加载部分,因为显然我不必使用Imageview,因为它只是可读:) 我的代码:
//SAVE
-(NSString *)pathOfFile{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsFolder = [paths objectAtIndex:0];
return [documentsFolder stringByAppendingFormat:@"myfile.plist"];
}
-(void)applicationWillTerminate:(NSNotification*)notification{
NSMutableArray *array = [[NSMutableArray alloc]init];
[array addObject: tileOne.imageView];
[array addObject: tileTwo.imageView];
[array writeToFile:[self pathOfFile] atomically:YES];
}
//LOAD
- (void)viewDidLoad
{
NSString *filePath = [self pathOfFile];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];
//Here it says read only, what to use then?
tileOne.imageView = [array objectAtIndex:0];
}
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:app];
[super viewDidLoad];
}
答案 0 :(得分:1)
tileOne是什么类型的对象?如果是UIButton,你回答了自己的问题,只需这样做:
[tileOne setImage:[array objectAtIndex:0] forState:UIControlStateNormal];
答案 1 :(得分:0)
您还可以查看NSCoding。鉴于您的头文件中有UIImage *image;
或其他内容,我猜您可以使用类似
-(void)saveImage
{
NSString *filePath =[documentsFolder stringByAppendingPathComponent:@"file.x";
NSMutableData *dataToSave = [NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:dataToSave];
[archiver encodeObject:image forKey:@"theImage"]; //if 'image' is I.E an UIImage
[archiver finishEncoding];
[dataToSave writeToFile filePath options:NSDataWritingAtomic error:&error];//do some additional error-stuff
}
-(void)openImage
{
NSString *filePath =[documentsFolder stringByAppendingPathComponent:@"file.x";
if([[NSFileManager defaultManager] fileExistsAtPath])
{
NSData *data = [[NSData alloc]initWithContentsOfFile:filePath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initWithReadingWithData:data];
image = [unarchiver decodeObjectForKey:@"theImage"];
[unarchiver finishDecoding];
}
else
{
//No images was previously saved, do something else, image = nil
}
}