そこで、次の2つの関数を使用して、ボタンの画像とUIImageViewの画像を変更します。
- (IBAction)changeButton:(id)sender {
//switch image to group if it is a badge. switch image to badge if it is a group.
if([[properties objectForKey:@"current_item"] isEqualToString:@"badge"]){
NSLog(@"reaching badge");
UIImage *imageToSet = [UIImage imageNamed:current_group_image];
[changeButtonOutlet.imageView setImage:imageToSet];
[properties setObject:@"group" forKey:@"current_item"];
} else {
if([[properties objectForKey:@"current_item"] isEqualToString:@"group"]){
NSLog(@"reaching group");
UIImage *imageToSet = [UIImage imageNamed:current_badge_image];
[changeButtonOutlet.imageView setImage:imageToSet];
[properties setObject:@"badge" forKey:@"current_item"];
}
}
[self switchBadgeImage];
}
-(void)switchBadgeImage{
if([[properties objectForKey:@"current_item"] isEqualToString:@"badge"]){
[badgeImageView setImage:[UIImage imageNamed:current_badge_image ]];
} else {
if([[properties objectForKey:@"current_item"] isEqualToString:@"group"]){
[badgeImageView setImage:[UIImage imageNamed:current_group_image ]];
}
}
}
ただし、画像は更新されません。changeButton IBActionをスパムすると、画像が変化しているのをすぐに確認できる場合がありますが、常にデフォルトの画像に戻ります(ボタンのみ)。
ボタンを繰り返し押すと、コンソールログに次のように表示されます。
2012-08-24 12:20:52.414 MyApp[1448:707] reaching group
2012-08-24 12:20:52.559 MyApp[1448:707] reaching badge
2012-08-24 12:20:52.687 MyApp[1448:707] reaching group
2012-08-24 12:20:52.846 MyApp[1448:707] reaching badge
2012-08-24 12:20:52.976 MyApp[1448:707] reaching group
2012-08-24 12:20:53.117 MyApp[1448:707] reaching badge
2012-08-24 12:20:53.262 MyApp[1448:707] reaching group
2012-08-24 12:20:53.348 MyApp[1448:707] reaching badge
私は何が間違っているのですか?みんなありがとう!
編集:それを修正しました!更新されたコードは次のとおりです。
-(void)switchBadgeImage {NSLog(@ "current group image:%@"、current_group_image); NSLog(@ "現在のバッジ画像:%@"、current_badge_image);
current_item = [properties objectForKey:@"current_item"];
if([current_item isEqualToString:@"badge"]){
NSLog(@"current item is equal to badge");
[badgeImage setImage:[UIImage imageNamed:current_badge_image ]];
} else {
if([current_item isEqualToString:@"group"]){
NSLog(@"current item is equal to group");
[badgeImage setImage:[UIImage imageNamed:current_group_image ]];
}
}
}
- (IBAction)changeButton:(id)sender {
//switch image to group if it is a badge. switch image to badge if it is a group.
if([[properties objectForKey:@"current_item"] isEqualToString:@"badge"]){
NSLog(@"reaching badge");
UIImage *imageToSet = [UIImage imageNamed:current_badge_image];
[changeButtonOutlet setImage:imageToSet forState:UIControlStateNormal];
[properties setObject:@"group" forKey:@"current_item"];
[properties synchronize];
} else {
if([[properties objectForKey:@"current_item"] isEqualToString:@"group"]){
NSLog(@"reaching group");
UIImage *imageToSet = [UIImage imageNamed:current_group_image];
[changeButtonOutlet setImage:imageToSet forState:UIControlStateNormal];
[properties setObject:@"badge" forKey:@"current_item"];
[properties synchronize];
}
}
[self switchBadgeImage];
}
実際にはいくつかの問題がありました。最初は、画像を間違った方法で切り替えていました。次に、UserDefaultsを同期していませんでした。また、現在のアイテムをUserDefaultsに保存した後、current_item変数を更新していませんでした。
すべての助けに感謝し、とても迅速に!