Ios 使用委托向后推送数据

Ios 使用委托向后推送数据,ios,uiviewcontroller,delegates,Ios,Uiviewcontroller,Delegates,我使用这个代码,但“它工作”不会发生 DetailViewController.h [#import <UIKit/UIKit.h> #import <Foundation/Foundation.h> @protocol ProtocolNameDelegate -(void)DoSomething; @end @interface DetailViewController : UIViewController { id<ProtocolNameD

我使用这个代码,但“它工作”不会发生

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;
@interface MasterViewController : UITableViewController <ProtocolNameDelegate> 
MasterViewController.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;
@interface MasterViewController : UITableViewController <ProtocolNameDelegate> 
我想我必须补充如下内容:

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;
你在执行中犯了错误

执行的摘要应该是

  • 在VC中创建协议
  • 为委托、合成和调用创建属性
  • 在MasterVC中导入DetailVC,并在MasterVC.h中包含委托
  • 在MasterVC.m中实现协议方法
  • 创建DetailVC实例并分配
    DetailVCObj.delegate=self

MasterViewController.m
中,您需要在某个地方分配并初始化
DetailViewController

DetailViewController* dvc = [[DetailViewControlleralloc] init];
    dvc._delegate = self;
另外,因为您在中编写了
[\u delegate doSomething]

DetailviewController的viewDidLoad方法

这意味着您必须设置
dvc.\u delegate=self
MasterViewController.m


在加载dvc的视图之前(在添加子视图或加载视图的任何内容之前)。

您正在detailViewController中创建委托,您如何从MasterViewController的对象访问它?您的意思是包括“detailViewController.h”?对此有很好的解释,看看这个,我会有两个DetailViewController实例?不,你只需要在展示/推送detailview的地方有一个实例。我想这是因为在这种情况下,我实际上有两个实例尝试做一件事。将按钮放置在细节上,然后单击按钮上的call delegate method并测试它是否工作。修复了使用SecondViewController*secondVC=(SecondViewController*)segue.destinationViewController;[secondVC setDelegate:self];这使我的代码正常:SecondViewController*secondVC=(SecondViewController*)segue.destinationViewController;[secondVC setDelegate:self];