2

プロジェクト内の 35 個のヘッダー ファイルの 1 つ (他の開発者から私に渡されました。それらすべてに同じデリゲート宣言が含まれています)

@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...
}

ここで宣言されているすべてのデリゲートには、同じ関数が含まれています。それらの定義も。これらの各デリゲートは、それぞれのViewControllerヘッダー ファイルの前に次のように宣言されます。

@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 の実装:

- (void)selectTapped:(NSString *)string
{
    if ([string isEqualToString:@"US"])
        isTextField = FALSE;
    else if([string isEqualToString:@"Other"]) {
        appDelegate.strCountry = @"";
        isTextField = TRUE;
    }
    [tblView reloadData];
    [objPopOver dismissPopoverAnimated:YES];
}

さて、質問に来ます:私はそれをすべてのクラスで繰り返したくありません(現在のように)。よりクリーンな方法で作成したいのですが、可能な解決策はありますか?

4

1 に答える 1