2013-02-14 48 views
2

一個項目35個文件(通過一些其他的開發商交給我;他們都包含相同的委託聲明)杜絕代表團重複的代碼在目標C

@interface ActivityDetailsCN : UIViewController <NSXMLParserDelegate,  
AccountStatusDelegate, AccountTypeDelegate, DirectionDelegate, RecipientDelegate, 
PriorityDelegate, DurationDelegate, CurrencyDelegate, OppTypeDelegate, 
OppCategoryDelegate, DatePickerDelegate, SalutationDelegate, DepartmentDelegate, 
LeadTypeDelegate, OwnershipDelegate, MailingDelegate, SourceDelegate, 
StateDelegate, CommentsDelegate, CityDelegate, ZipCodeDelegate> 
{ 
    //Declaration of iVars goes here... 
} 

全體代表宣佈這裏包含了相同的功能。甚至他們的定義也是如此。

@protocol AccountStatusDelegate <NSObject> 
    - (void)cancelTapped; 
    - (void)doneTapped; 
    - (void)selectTapped:(NSString *)string; 
@end 

@interface AccountStatusVC : UIViewController <NSXMLParserDelegate> { 
} 
@property (unsafe_unretained) id <AccountStatusDelegate> delegate; 

cancelTapped的執行情況::

- (void)cancelTapped { 
    [objPopOver dismissPopoverAnimated:YES]; 
} 

cancelTapped的執行情況:

- (void)doneTapped { 
    [tblView reloadData]; 
    [objPopOver dismissPopoverAnimated:YES]; 
} 

cancelTapped的執行情況:

這些代表他們各自 ViewController頭文件中像在此之前的聲明
- (void)selectTapped:(NSString *)string 
{ 
    if ([string isEqualToString:@"US"]) 
     isTextField = FALSE; 
    else if([string isEqualToString:@"Other"]) { 
     appDelegate.strCountry = @""; 
     isTextField = TRUE; 
    } 
    [tblView reloadData]; 
    [objPopOver dismissPopoverAnimated:YES]; 
} 

現在,回到問題:我不想在每一堂課(現在都是這樣)重複它;我想以更清晰的方式使用它,有沒有可能的解決方案?

回答

3

實現一個共同的超類的委託方法,並重構所有協議的是一個共同的TapCallbackDelegate協議

+0

的問題是,沒有這裏的任何公共超。甚至沒有班級的層次。 – viral 2013-02-14 11:32:10

+1

但你可以做一個嗎? – wattson12 2013-02-14 11:37:16