gpt4 book ai didi

ios - 如何创建从 subview 到父 View 的委托(delegate)( subview -父 View )

转载 作者:可可西里 更新时间:2023-11-01 05:36:15 25 4
gpt4 key购买 nike

我之前曾与代表团合作过。我知道如何创建从 super View 到 subview 类的委托(delegate)。但是,我正在尝试使用相同的方法以相反的方式进行操作,但它不起作用!委托(delegate)是仅意味着以一种方式工作,还是有一种方法/技巧可以将其用作类之间的双向通信?我在 parent/superview .h 类中收到一个错误:

Cannot find protocol definition for 'SubViewControllerDelegate'

我的代码是这样的: subview .h

#import <UIKit/UIKit.h>

#import "SuperViewController.h"

@protocol SubViewControllerDelegate <NSObject>

- (void)someMethod:(NSData *)data;

@end

@interface SubViewController : UIViewController

@property (weak, nonatomic) id <SubViewControllerDelegate> delegate;

@end

subview .m:

[self.delegate someMethod:data]; 

super View .h

#import <UIKit/UIKit.h>

#import "SubViewController.h"

@interface SuperViewController : UIViewController <SubViewControllerDelegate>

@end

super View .m:

#pragma mark - SubView Controller Delegate Methods
- (void)someMethod:(NSData *)data{
NSLog(@"%@", data);
}

我做错了什么或遗漏了什么吗?

最佳答案

你有一个“导入周期”,因为“SuperViewController.h”导入“SubViewController.h”,反之亦然。

删除 #import "SuperViewController.h"在“SubViewController.h”应该可以解决问题。

如果您确实需要在“SubViewController.h”中声明该类,请使用 @class SuperViewController;以避免导入循环。

备注: <SubViewControllerDelegate>协议(protocol)声明可能不是public 接口(interface)“SuperViewController.h”中根本不需要。

在“SuperViewController.h”中,将类声明为

@interface SuperViewController : UIViewController

在“SuperViewController.m”中,用协议(protocol)定义一个类扩展:

@interface SuperViewController () <SubViewControllerDelegate>
@end

关于ios - 如何创建从 subview 到父 View 的委托(delegate)( subview -父 View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17609818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com