gpt4 book ai didi

ios - 在 UIView/UIViewController 关系中定义委托(delegate)

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:06:12 26 4
gpt4 key购买 nike

我有一个名为 TargetView 的子类 UIView,它包含在一个名为 MainViewController 的 UIViewController 中。我想将 MainViewController 设置为 TargetView 的委托(delegate),以便 MainViewController 可以从 subview (TargetView) 接收消息。

在我的 MainViewController (UIViewController) header 中,我有以下内容:

#import <UIKit/UIKit.h>
#import "TargetView.h"

@class TargetView;

@interface MainViewController : UIViewController <TargetViewDelegate>

@property (strong, nonatomic) IBOutlet TargetView *target;
@property (strong, nonatomic) IBOutlet UILabel *lblResults;

@end

当我在接口(interface)声明中设置 TargetViewDelegate 时,它​​会出现在代码完成中,因此它知道它在那里,但随后构建失败并显示消息:找不到协议(protocol)声明...”

在我的 TargetView (UIView) 类中,我有以下内容:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "MainViewController.h"

@protocol TargetViewDelegate

@required
-(void)receivedTargetTap;

@end

@interface TargetView : UIView{

id<TargetViewDelegate> delegate;
}

@property (nonatomic,strong) NSString *lblResults;
@property (nonatomic,weak) id<TargetViewDelegate> delegate;

@end

创建自定义委托(delegate)对我来说是一个未知领域。谁能告诉我我做错了什么?谢谢!

最佳答案

我相信你的 TargetView.h 应该是:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@protocol TargetViewDelegate <NSObject>

@required
-(void)receivedTargetTap;

@end

@interface TargetView : UIView

@property (nonatomic, strong) NSString *lblResults;
@property (nonatomic, weak) id<TargetViewDelegate> delegate;

@end

主视图 Controller .h :

#import <UIKit/UIKit.h>
#import "TargetView.h"

@interface MainViewController : UIViewController <TargetViewDelegate>

@property (strong, nonatomic) IBOutlet TargetView *target;
@property (strong, nonatomic) IBOutlet UILabel *lblResults;

@end

在您的代码中,您必须添加 <NSObject>在你的协议(protocol)定义之后,删除 MainViewController.h导入您的 TargetView 类。

关于ios - 在 UIView/UIViewController 关系中定义委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202424/

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