gpt4 book ai didi

iphone - 在单独的文件中定义委托(delegate)函数(而不是在 ViewController 中)

转载 作者:行者123 更新时间:2023-12-01 19:17:06 25 4
gpt4 key购买 nike

我有一个 ViewController 和一个 UIView。
UIView 有一个委托(delegate),委托(delegate)功能是在 ViewController 中设置的。

我想做的就是在单独的文件中定义委托(delegate)函数。 所以 UIView.m #imports 单独的文件,而不是所有使用 UIView 的 ViewControllers。

我相信这是一个标准程序,但为了让它发挥作用,我一直在为自己摔倒。 :|非常感谢一些帮助。谢谢。

myViewController.h

#import <UIKit/UIKit.h>
#import "myUIView.h"
@protocol ModalViewDelegate
-(void)didReceiveMessage:(NSString *)message;
@end
@interface myViewController : UIViewController <ModalViewDelegate>
@property (nonatomic, strong) myUIView *myUIViewItem;
@end

myViewController.m
#import "myViewController.h"
#import "myUIView.h"
@interface myViewController ()
@end
@implementation myViewController

@synthesize myUIViewItem;
- (void)didReceiveMessage:(NSString *)message { //<<< THIS IS WHAT
NSLog(@"Message from button: %@", message); //<<< NEEDS MOVING
}
- (void)viewDidLoad
{

myUIViewItem.delegate = self;


我的UIView.h
#import <UIKit/UIKit.h>
@protocol ModalViewDelegate;
@interface myUIView : UIView {
id<ModalViewDelegate> delegate;
}
@property (nonatomic, strong) id<ModalViewDelegate> delegate;

myUIView.m
#import "myUIView.h"
#import "myViewController.h"
@implementation myUIView
@synthesize delegate;
...
[delegate didReceiveMessage:@"Data from UIView!"];

最佳答案

嗯,实际上有一种方法,

只需获取一个 .h 文件,然后说 connectionDelegate.h并声明您的协议(protocol)初始化

在 connectionDelegate.h 中:

     #import <UIKit/UIKit.h>  
@protocol ConnectionDelegate
-(void)getResult:(NSString*)_result;
@end

然后在您的 View Controller 中:
 #import "ConnectionDelegate.h"

@interface myViewController : UIViewController <ConnectionDelegate>
{
id delegate;
}

然后在 .m 文件中,只需调用该方法
[delegate getResult:_result];

编辑 关于警告:

您需要在 View Controller 中声明该方法,您需要这样做。
 [self getResult:urlDataString];

-(void)getResult:(NSString*)_result{
[delegate getResult:_result];
}

关于iphone - 在单独的文件中定义委托(delegate)函数(而不是在 ViewController 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12621776/

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