0

UIbuttonオブジェクトをお気に入りリストに追加するために(ストーリーボードで)作成しましたが、構成に問題があります。これにより、オブジェクトがお気に入りに追加されますが、お気に入りを解除するにはどうすればよいですか?

私はしばらくの間検索して考えていましたが、manageHighlightAndFaveでifステートメントを次のように作成することを考えました:if favButton state = highlighted、お気に入りから削除し、ハイライトを削除します。それ以外の場合は、お気に入りに追加してハイライトを追加します。これは良いですか、それとも私が試していることを行うための好ましい方法は何ですか?私はプログラミングに不慣れなので、例が大好きです。

-(IBAction)favoriteButtonPressed:(id)sender
{
    [self performSelector:@selector(manageHighlightAndFave:) withObject:sender afterDelay:0];
}

- (void)manageHighlightAndFave:(UIButton*)favButton {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ItemSelected"
                                                        object:selectedObject];
    [favButton setHighlighted:YES];
}

PS。ストーリーボードの「タッチダウン」にリンクされています。

4

1 に答える 1

1

カスタムボタンを作成することをお勧めします。次の参照コード。

まず、次のボタンを作成します。File-New-File-CocoaTouch-Objective-Cクラス ここに画像の説明を入力してください ここに画像の説明を入力してください FavoriteButton.h

#import <UIKit/UIKit.h>

@interface FavoriteButton : UIButton

@property (nonatomic, assign) BOOL isFavorite;
@end

FavoriteButton.m

#import "FavoriteButton.h"

@implements FavoriteButton : UIButton

@synthesize isFavorite;
...
@end

次に、ストーリーボードでFavoriteButtonをリンクします。次の画像を参照してください。ストーリーボードの右側のパネルにあります。以前、元のUIButtonをクリックしました

ここに画像の説明を入力してください

YourViewController.h

#import <UIKit/UIKit.h>
#import "FavoriteButton.h"

@interface YourViewController : UIViewController
@property (retain, nonatomic) IBOutlet FavoriteButton *favoriteButton;
@end

@implements YourViewController : UIViewController
@synthesize favoriteButton;


-(void) viewDidLoad
{
   self.favoriteButton = [[FavoriteButton alloc] initWithFrame:...]];
   //favoriteButton.isFavorite = NO; (already set in storyboard)
   ...
}

-(IBAction)favoriteButtonPressed:(id)sender
{
    [self performSelector:@selector(manageHighlightAndFave:) withObject:sender afterDelay:0];
}

- (void)manageHighlightAndFave:(FavoriteButton *)favButton {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ItemSelected"
                                                        object:selectedObject];

    //true-false(YES-NO) Toggled. but isFavorite property is Must be initialized to false.
    favButton.isFavorite = !favButton.isFavorite;

    if(favButton.isFavorite)
    {
        favButton.imageView.image = [UIImage imageNamed:@"your_star_image"];
        [favButton setHighlighted:YES];
    }
    else
    {
        favButton.imageView.image = nil;
        [favButton setHighlighted:NO];
    }
}
于 2012-08-06T02:54:51.697 に答える