我使用此代码,但“有效”不会发生。
DetailViewController.h
[#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@protocol ProtocolNameDelegate
-(void)DoSomething;
@end
@interface DetailViewController : UIViewController {
id<ProtocolNameDelegate> _delegate;
}
@property (strong, nonatomic) id<ProtocolNameDelegate> _delegate;
DetailViewController.m
@synthesize _delegate;
- (void)viewDidLoad
{
[super viewDidLoad];
[_delegate DoSomething];
}
MasterViewController.h
@interface MasterViewController : UITableViewController <ProtocolNameDelegate>
MasterViewController.m
-(void)DoSomething
{
NSLog(@"It works");
}
我想我必须添加类似的内容:
MasterViewController* mvc = [[MasterViewController alloc] init];
mvc._delegate = self;
但是它给出了一个错误,顺便说一句,它将创建另一个MasterViewController实例吗?
最佳答案
代替
MasterViewController* mvc = [[MasterViewController alloc] init];
mvc._delegate = self;
写这个
DetailViewController* svc = [[DetailViewController alloc] init];
dvc._delegate = self;
您在执行中犯了错误。
执行摘要应该是。
在DetailVC中创建协议。
创建代表,合成和调用的属性。
将DetailVC导入MasterVC并在MasterVC.h中包括委托
在MasterVC.m中实现协议方法
创建DetailVC的实例并分配
DetailVCObj.delegate = self;
关于ios - 使用委托(delegate)将数据推回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17808428/