ОБНОВЛЕНО ----
Хорошо, поэтому я нашел способ сделать это .... может быть, это не правильный путь, но я новичок в 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.И вот она, кнопка, которая при нажатии изменяет и сохраняет изображение пользовательской кнопки.
Спасибо!