0

我创建了一个UIbutton(在情节提要中)将对象添加到收藏夹列表,但我在配置它时遇到了麻烦。这会将对象添加到收藏夹,但是如何取消收藏呢?

我一直在搜索和思考一段时间,我的想法是在 manageHighlightAndFave 中做一些 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-Cocoa Touch-Objective-C 类 在此处输入图像描述 在此处输入图像描述 FavoriteButton.h

#import <UIKit/UIKit.h>

@interface FavoriteButton : UIButton

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

收藏按钮.m

#import "FavoriteButton.h"

@implements FavoriteButton : UIButton

@synthesize isFavorite;
...
@end

其次,在 Storyboard 中链接一个 FavoriteButton。参考下图。位于故事板的右侧面板中。之前,点击你原来的 UIButton

在此处输入图像描述

你的ViewController.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 回答