0

在我的项目中,我有 3 个控制器;

  • NavigationController
  • ServiceTableViewController
  • DateTableViewController

ServiceTableViewController初始视图控制器。它有几行提示用户输入数据,这些数据将通过电子邮件发送到特定的电子邮件地址。当点击其中一行时,会将用户发送到DateTableViewController提示用户从UIDatePicker.

我面临的问题是从中获取数据DateTableViewController,以便在 上显示标签ServiceTableViewController以显示用户在DateTableViewController. 我知道如何从一个视图控制器获取信息到另一个视图控制器,但反过来说,我不知道该怎么做。任何帮助表示赞赏。

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

有几种方法可以在视图控制器之间来回传递数据。

但老实说,代表真的是你真正需要的,听起来就像你目前的情况。看到这个->(在视图控制器之间传递数据


话虽如此,如果您使用委托,以下是如何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.m添加这个DateTableViewController

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 回答