Ios 使用委托向后推送数据
我使用这个代码,但“它工作”不会发生 DetailViewController.hIos 使用委托向后推送数据,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
[#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];