2012-02-24 6 views
-3

私はUIViewControllerをプッシュするUITableViewControllerを持っており、2つのNSDatesとBOOLをその子ビューコントローラからテーブルビューコントローラに戻す必要があります。変数を親ビューに渡すか?

どうすればいいですか?私が明確でないか、もっと説明が必要なのかどうか教えてください。

ご協力いただきありがとうございます。

+0

特定の質問を投稿する必要があります。 SOは投票を行うのに適した場所ではなく、すでにこの質問のダブがあるとわかっている場合は、新しい質問が必要なことを具体的に述べる必要があります。 – mydogisbox

+0

私は自分の問題と、まさに私が必要としているものを正確に特定しました。私が言及したようにいくつかの変数、2つのNSDatesと1つのBOOLをUIViewControllerからその親のUITableViewControllerに渡す必要があります。私はそれから、本質的に、本質的に、すでにこれらについて多くの質問があるという事実に縛られてはいけないことを説明するために続けました。私は「もしあなたがそこに価値ある答えがあると感じたら、それを書き直すのではなく正しいアプローチであり、私はその解決策を働かせることができない方法を広げます。私を許して、私はこれを世論調査にするつもりはなかった。 –

+1

このケースでは、デリゲートのデザインパターンが正しい戦略です。 –

答えて

1

デリゲートを使用するのは、あるコントローラから別のコントローラに情報を渡す適切な方法です。

一般的には、UITableViewControllerヘッダーにプロトコルを宣言して実装し、代理人でUIViewControllerを初期化します。一言で言えば

は、あなたのUITableViewController .hファイルはこのようなものが必要です:次に

@protocol setDateDelegate <NSObject> 
@required 
- (void) setDateOne:(NSDate *)one dateTwo:(NSDate *)two; 
@end 

を、あなたはあなたのUITableViewController .mファイルの日付でやりたいものは何でもやって、上記のクラスを実装するべきです。あなたのUIViewController

、あなたは(最後の選択肢)カスタムinitメソッドを定義することができます。

まず、あなたの.hにデリゲートプロパティを定義して、カスタムのinitメソッド、そしてあなた.Mでそれを実装

- (id)initWithDelegate:(NSObject *)myDelegate 
{ 

    self = [super init]; 
    if (self) { 
     self.delegate = myDelegate; 
    } 
    return self; 
} 

次に、あなただけのこれを行うためのより多くの方法は、includiがあり [self.delegate setDateOne:one dateTwo:two];

を使用し、あなたのUITableViewControllerに日付を渡す必要があります。このような何かを持ちますNGはカスタムinitメソッドをスキップし、作成した後、ちょうどデリゲートを設定UIViewController

MyUIViewController *viewController = [[[MyUIViewController alloc] init] autorelease]; 
viewController.delegate = self; 
... 

それは個人の好みのスタイルのより多くのです。

私はこれを私の頭の上から書いているので、おそらくコードを台無しにしてしまいました(そして、いくつかのビットを忘れてしまいました)が、あなたを始めるのに十分なはずです。

+0

お返事ありがとうございます。すぐに問題が発生し、ビューコントローラ(子)のデリゲートはデリゲートプロパティを持たないので、これを行う理由は何ですか? –

+0

使用する固有の代理人はありません。自分自身を子ビューコントローラのプロパティとして自分で作成する必要があります。 – Adis

関連する問題