2012-08-06 114 views
0

我創建了UIbutton(在故事板中)將對象添加到收藏夾列表中,但我在配置時遇到問題。這將對象添加到最愛,但如何不喜歡它?帶有高亮顯示的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。與故事板中的「觸及」相關聯。

回答

1

我建議你製作一個自定義按鈕。以下轉介代碼。

首先,製作下面的按鈕。 文件 - 新建 - 文件 - 可可觸摸Objective-C類 enter image description here enter image description here 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 

硒cond,在Storyboard中鏈接一個FavoriteButton。參考下面的圖片。 在故事板的右側面板中。之前,點擊您最初的UIButton

enter image description here

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]; 
    } 
} 
+0

我嘗試這樣做,但我得到4個錯誤:房產 「isFavorite」 關於類型的對象未找到UIButton x 2和「UIButton中沒有可見的@interface聲明選擇器」setHighlighted「x 2.並且,如果要將添加的通知放置在'if'塊中,並且要刪除fav的通知將被放置在'其他'塊?還是我誤解了這個? – ingenspor 2012-08-06 03:13:26

+1

我編輯後。請檢查出來。 – 2012-08-06 03:27:26

+0

很好,非常感謝! – ingenspor 2012-08-08 06:34:24