我使用此代码,但“有效”不会发生。

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/

10-17 00:52