0

私のプロジェクトには 3 つのコントローラーがあります。

  • NavigationController
  • ServiceTableViewController
  • DateTableViewController

ServiceTableViewController、初期ビュー コントローラーです。ユーザーにデータの入力を求める行がいくつかあり、特定の電子メール アドレスに電子メールで送信されます。行の 1 つをタップすると、ユーザーは に移動しDateTableViewController、ユーザーは から日付を選択するように求められますUIDatePicker

私が直面している問題は、ユーザーが で選択した日付DateTableViewControllerを表示するラベルを に表示するためにデータを取得することです。あるView Controllerから別のView Controllerに情報を取得する方法は知っていますが、いわば逆に行く方法は私が知っていることではありません。どんな助けでも大歓迎です。ServiceTableViewControllerDateTableViewController

4

2 に答える 2

0

デリゲート パターンを調査します (こちら) (Apple フレームワーク内で頻繁に使用されるパターン)。デリゲートに日付を渡すことができるデリゲート プロトコルを定義したいと考えています。

単一のメソッドとプロパティを持つ @protocol としてパターンを実装できますDateTableViewController。はServiceTableViewController、 を押す前に、自身をデリゲートとして設定しますDateTableViewController

または、ブロックを使用して実装することもできます。ここでも、 はServiceTableViewControllerを押す前にブロックを設定しますDateTableViewController

于 2013-04-25T18:36:49.167 に答える
0

これを見てください: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html

ビュー コントローラ間でデータをやり取りするには、いくつかの方法があります。

しかし、正直なところ、デリゲートは本当に必要なものであり、現在のケースのように聞こえます。これを参照してください->(View Controller間でデータを渡す


そうは言っても、デリゲートを使用する場合は、次のように ---DateTableViewController.h上部にプロトコルをセットアップします。

@protocol DateTableViewControllerDelegate <NSObject>
- (void)userSelectedThisDate:(NSDate *)d;
end

これを他のプロパティと一緒に置く

@property (nonatomic, weak) id <DateTableViewControllerDelegate> delegate;

DateTableViewController.m返送する日付とともに

[self.delegate userSelectedThisDate:withTheDateToSendBack];

入れてServiceTableViewController.h追加

#import "DateTableViewController.h"
@interface ServiceTableViewController : UIViewController <DateTableViewControllerDelegate>

あなたはUINavigationController_ServiceTableViewController.mDateTableViewController

DateTableViewController *vc = [[DateTableViewController alloc] init];
self.delegate = self;
[self.navigationController pushViewController:vc animated:YES];

そして最後にデリゲートメソッドを入れますServiceTableViewController.m

- (void)userSelectedThisDate:(NSDate *)d {
   NSLog(@"%@", d); // this should show the returned date 
}
于 2013-04-26T02:18:13.393 に答える