我有一个UITableViewController推送UIViewController,我需要将两个NSDates和一个BOOL从该子视图控制器传递回表视图控制器。
我怎么能这样做?如果我不清楚或者您需要更多解释,请告诉我。
感谢您的帮助,谢谢。
答案 0 :(得分:1)
使用委托是将信息从一个控制器传递到另一个控制器的正确方法。
通常,您要做的是在UITableViewController
标头中声明协议,实现它,然后使用委托初始化UIViewController
。
简而言之,您的UITableViewController .h
文件应该具有以下内容:
@protocol setDateDelegate <NSObject>
@required
- (void) setDateOne:(NSDate *)one dateTwo:(NSDate *)two;
@end
然后,您应该执行上述课程,对UITableViewController .m
文件中的日期执行任何操作。
在UIViewController
中,您可以(最后选择)定义自定义初始化方法:
首先,在你的.h中定义一个委托属性,然后用一个自定义的init方法,然后在你的.m中用这样的方法实现它:
- (id)initWithDelegate:(NSObject *)myDelegate
{
self = [super init];
if (self) {
self.delegate = myDelegate;
}
return self;
}
接下来,当您需要将日期传递给UITableViewController
时,只需使用即可
[self.delegate setDateOne:one dateTwo:two];
有更多方法可以执行此操作,包括跳过自定义init方法,并在创建UIViewController
后设置委托:
MyUIViewController *viewController = [[[MyUIViewController alloc] init] autorelease];
viewController.delegate = self;
...
这更像是个人偏好风格。
我可能搞砸了代码(并且忘记了一些代码)因为我正在写这篇文章,但它应该足以让你开始。