0

SubSelectVCからモーダルに表示されるサブセレクションの選択肢を処理する がありますSearchVCSubSelectVCには、-(void)didSelectRowAtIndexPath大まかに次のオプションを実行する があります。

if ([[[UIDevice currentDevice] systemVersion] intValue] < 5) {
    ((SearchVC *)self.parentViewController.filters.filterValue = @"Some value";
}
else {
    ((SearchVC *)self.presentingViewController.filters.filterValue = @"Some value";
}

これは設計が悪いと叫んでいるように思えますが、つまり、この方法でそれを行うオプションがあり、とても簡単です! これの何が問題なのですか?どうすれば正しくなりますか? (委任を使用する必要がありますか?)

4

1 に答える 1

2

はい、これのより良いカプセル化されたバージョンは、SubSelectVC のヘッダー ファイルでデリゲート プロトコルを定義し、SubSelectVC でデリゲート プロパティを定義することだと思います。

そうすれば、リストからのモーダル選択が必要なタスクに対して、View Controller を再利用できます。

編集:ヘッダーの例を追加:

SubSelectVC.h:

@protocol SubSelectVCDelegate

- (void)itemSelected:(NSString *)itemName;

@end

@interface SubSelectVC : UIViewController

@property (assign) id <SubSelectVCDelegate> delegate;

// etc...

@end
于 2012-01-13T20:09:45.687 に答える