将变量传递给父视图?

时间:2012-02-24 00:17:56

标签: objective-c ios cocoa-touch uiviewcontroller uitableview

我有一个UITableViewController推送UIViewController,我需要将两个NSDates和一个BOOL从该子视图控制器传递回表视图控制器。

我怎么能这样做?如果我不清楚或者您需要更多解释,请告诉我。

感谢您的帮助,谢谢。

1 个答案:

答案 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;
...

这更像是个人偏好风格。

我可能搞砸了代码(并且忘记了一些代码)因为我正在写这篇文章,但它应该足以让你开始。