调用函数并在视图之间传递信息

时间:2013-01-29 18:47:24

标签: iphone delegates tableview addchild

提前感谢您的帮助!

在我的项目的主ViewController.m中,我添加了一个自定义的tableView,如下所示:

messageController = [[MyMessagesController alloc] initWithStyle:UITableViewStylePlain];
[self addChildViewController:messageController];
[self.view addSubview:messageController.view];

然后,在MyMessagesController.m部分中,tableView didSelectRowAtIndexPath:我想编写一些代码,该代码将在创建它的ViewController.m中生效并添加为childViewController。

如何从MyMessagesController.m访问ViewController.m的功能?

我可以以某种方式使它成为委托,所以我可以调用[delegate functionName] ;? 我可以将信息传递回ViewController.m吗?通过NSString或NSArray或其他任何方式选择表格中的哪些行?

2 个答案:

答案 0 :(得分:1)

是的,请使用代理人,如果您不确定如何最好地完成此任务,here是Apple对委托编程的一个很好的参考

答案 1 :(得分:0)

弄清楚了,这里是你如何将一个viewController变成另一个的委托:

在父控制器的.h中 -

@interface ViewController : UIViewController <NameOfDelegate> {

在父控制器的.m中,创建新视图后 -

newViewController.delegate = self;

还有:

- (void)functionToCall:(id)sender {
    NSLog(@"Function Called!!!");
}

在你要添加的newViewController的.h中 -

@protocol NameOfDelegate;

@interface newViewController : UIViewController/OR/TableViewController {
    id <NameOfDelegate> delegate;
}

@property (nonatomic, strong) id <NameOfDelegate> delegate;

@end

@protocol NameOfDelegate
- (void)functionToCall:(id)sender;
@end

在newViewController的.m中 -

@implementation newViewController

@synthesize delegate;

当你准备好在你的代表中调用该函数时 -

[delegate functionToCall:self];