我无法弄清楚为什么我要为这个电话获得一个零代表。好像我正在设置委托就好了。
LogoutViewController.h
@protocol SomeNewDelegate <NSObject>
@required
- (void)someMethod;
@end
@interface LogoutViewController : UIViewController
@property (nonatomic, weak) id<SomeNewDelegate> delegate;
LogoutViewController.m
- (IBAction)logoutButtonTapped:(id)sender {
NSLog(@"logout tapped");
[self.delegate someMethod];
[self dismissViewControllerAnimated:YES completion:nil];
}
MainViewController.m
@interface MainViewController () <UIScrollViewDelegate, SomeNewDelegate>
@property (nonatomic, strong) LogoutViewController *logoutVC;
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.logoutVC.delegate = self;
}
- (void)someMethod {
NSLog(@"someMethod");
}
someMethod永远不会被调用,我不明白为什么委托是零。有什么帮助吗?
答案 0 :(得分:0)
在viewDidload中使用以下代码
LogoutViewController *logoutVC = [[LogoutViewController alloc]init];
logoutVC.delegate = self;
从属性中删除LogoutViewController。 我已经使用过这个并且工作正常。
希望它为你工作。
.h文件中的编辑代码
@protocol syncDataDelegate <NSObject>
@required
- (void) offlineSyncProcess;
@end
@interface LoginViewController : UIViewController
{
id <syncDataDelegate> syncDelegate;
}
@property (retain) id syncDelegate;
<。>文件中的
@implementation LoginViewController
{
// your code
}
@synthesize syncDelegate;
- (IBAction)logoutButtonTapped:(id)sender {
NSLog(@"logout tapped");
[syncDelegate offlineSyncProcess];
}
您可以从任何方法在LoginViewController.m文件中调用委托方法。
在My Delegate实施中 在.m文件
@interface MainViewController ()<syncDataDelegate>
@end
@implementation MainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
LoginViewController *LVC = [[LoginViewController alloc]init];
LVC.syncDelegate = self;
}
现在在这里使用委托方法
- (void) offlineSyncProcess
{
// your code here
}
此代码在我的项目中有效,请在项目中进行检查。
答案 1 :(得分:0)
当您尝试为其设置委托属性时,请确保您的logoutVC不是nil。
您可以在LogoutViewController.m中实现setDelegate方法。然后使用断点来确保它被调用。
答案 2 :(得分:-1)
委托是零,因为你的logoutVC是零,你没有为logoutvc属性分配内存。
在self.logoutVC.delegate = self之前 添加以下代码
self.logoutVC = [[LogoutViewController alloc] init];
一切都将自动开始。