XCODE: Как сохранить изображение кнопки после изменения? - PullRequest
2 голосов
/ 22 июня 2011

ОБНОВЛЕНО ----

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

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...