已更新----
好的,所以我找到了一种方法来做到这一点....可能不是正确的方法,但我是xcode的新手,这种方式似乎对我有用。也许有人可以改进这个想法。
最初的问题是如何在更改后保存按钮图像?好吧,好吧这里....我有一个自定义按钮设置图像,所以我做的第一件事是使用这个代码更改该按钮的图像:(顺便说一下它设置,以便您单击一个按钮更改自定义按钮的图像)
.h file
@interface viewcontroller{
IBOutlet UIButton *btnSetImage1;
}
@property (nonatomic, retain) IBOutlet UIButton *btnSetImage1;
然后是代码:
.m file
@synthesize btnSetImage1;
//Inside a button's action
UIImage *btnImage1 = [UIImage imageNamed:@"button_green.png"];
[btnSetImage1 setImage:btnImage1 forState:UIControlStateNormal];
-----------------------这里的问题得到了回答------------------ ------------
好的,现在我在自定义按钮上更改了图像,我通过添加以下内容保存了它:
.h file
@interface viewcontroller{
IBOutlet UIButton *btnSetImage1;
IBOutlet UIImageView *buttonImgChange1;
}
@property (nonatomic, retain) IBOutlet UIButton *btnSetImage1;
@property (nonatomic, retain) IBOutlet UIImageView *buttonImgChange1;
然后是代码:
.m file
@synthesize btnSetImage1;
@synthesize buttonImgChange1;
//Inside a button's action
UIImage *btnImage1 = [UIImage imageNamed:@"button_green.png"];
[btnSetImage1 setImage:btnImage1 forState:UIControlStateNormal];
//Set image to variable
buttonImgChange1 = [[UIImageView alloc] initWithImage:btnImage1];
//SAVE CHANGES
// Create instances of NSData
UIImage *savedButtonImage1 = buttonImgChange1.image;
NSData *buttonData1 = UIImagePNGRepresentation(savedButtonImage1);
// Store the data
NSUserDefaults *buttondefaults1 = [NSUserDefaults standardUserDefaults];
[buttondefaults1 setObject:buttonData1 forKey:@"buttonImage1"];
[buttondefaults1 synchronize];
通过这种方式,我可以将按钮图像保存为名为“buttonImage1”的按键。然后我在viewdidload中调用了这个键:
//-----------UPDATE BUTTONS---------------
// Get the stored data before the view loads
NSUserDefaults *buttondefaults1 = [NSUserDefaults standardUserDefaults];
NSData *buttonData1 = [buttondefaults1 dataForKey:@"buttonImage1"];
UIImage *savedButtonImage1 = [UIImage imageWithData:buttonData1];
// Update the UI elements with the saved data
buttonImgChange1.image = savedButtonImage1;
//Update buttons
UIImage *btnImage1 = savedButtonImage1;
[btnSetImage1 setImage:btnImage1 forState:UIControlStateNormal];
buttonImgChange1 = [[UIImageView alloc] initWithImage:btnImage1];
就像我说的那样......我是xcode的新手并且全神贯注地寻找这个问题的解决方案。在自己摸索之后,我想出了这个解决方案。它可能不是最好或最有效的,我不知道,但它对我有用,我希望它能帮助其他人。
哦,只是一个注释,如果你想要两个不同的图像,一个在按钮正常状态下显示,然后在单击按钮时显示另一个图像,只需复制所有代码并重命名所有变量,即forKey名称,最后将forState更改为 - forState:UIControlStateHighlighted。并且你有它,按下按钮更改并保存自定义按钮的图像。
谢谢!