提前感谢您的帮助!
在我的项目的主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或其他任何方式选择表格中的哪些行?
答案 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];