2013-07-12 40 views
0

我想創建一個複選框按鈕,這個按鈕在很多地方都會在我的應用程序中使用。我想要這個按鈕的一個基本行爲是當按鈕被點擊時改變其狀態。所以我將這個按鈕分類並寫下了下面的類。基本上它只是增加一個額外的目標方法,在 - awakeFromNib函數按鈕。通過繼承來改變UIButton的行爲

// 
// CheckBoxButton.h 
// CheckBoxButton 
// 
// Created by Ankit Srivastava on 11/07/13. 
// Copyright (c) 2013. All rights reserved. 
// 

#import <UIKit/UIKit.h> 

@interface CheckBoxButton : UIButton 

@end 

這裏是.M

/ 
// CheckBoxButton.m 
// CheckBoxButton 
// 
// Created by Ankit Srivastava on 11/07/13. 
// Copyright (c) 2013. All rights reserved. 
// 

#import "CheckBoxButton.h" 

@implementation CheckBoxButton 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 

    } 
    return self; 
} 

-(void)awakeFromNib{ 
    [self addTarget:self action:@selector(alterState:) forControlEvents:UIControlEventTouchUpInside]; 
} 

-(void) alterState:(UIButton*)sender { 
    [self setSelected:!self.isSelected]; 
} 

@end 

現在,我通過廈門國際銀行將按鈕添加,只是改變其基類CheckBoxButton。 每一件事情都可以正常工作,但我聽說UIButton不應該被分類,但我找不到任何文檔證明,並且我只是添加一個方法來改變它的狀態。所以我的問題是這種方法是否可以..?

感謝您的輸入。

+1

你最好是對UIControl進行子類化,如果你在'NIB'文件中使用它們,'initWithCoder:(NSCoder *)aDecoder'被調用,你可以在這裏添加目標。 – rckoenes

回答

0

我已經多次分類UIButton。這是一個班級集羣,所以在這樣做的時候有潛在的問題,但我還沒有遇到任何顯示塞子。