gpt4 book ai didi

iphone - 为什么我的 iPhone 应用程序无法调用委托(delegate)方法

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

我正在开发 iPhone 应用程序。我自定义了导航栏的标题 View 。标题 View 包含一个按钮,我还定义了委托(delegate)方法来支持按钮单击事件。但是当点击按钮时,委托(delegate)不能被执行。我不知道为什么?
下面作为我的代码:
UPDelegate.h

@protocol UPDelegate <NSObject>
@optional
-(void)buttonClick;
@end

标题 View .h
#import <UIKit/UIKit.h>
#import "UPDelegate.h"
@interface TitleView :UIView
@property (nonatomic, unsafe_unretained) id<UPDelegate> delegate;
-(id)initWithCustomTitleView;
@end

标题 View .m
@synthesize delegate;
-(id)initWithCustomTitleView
{
self = [super init];
if (self) {
UIButton *titleButton = [UIButton buttonWithType:UIBUttonTypeCustom];
titleButton.frame = CGRectMake(0, 0, 20, 44);
[titleButton setTitle:@"ABC" forState:UIControlStateNormal];

// add action
[titleButton addTarget:delegate action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:titleButton];
}
return self;
}

在我的 ViewController 中,我实现了如下协议(protocol):

MyViewController.h
@interface MyViewController : UIViewController<UPDelegate>

在 .m 文件中,我编写了委托(delegate)方法,但无法执行。
我的 View Controller .m
-(void)buttonClick{
NSLog("click title button");
}

最佳答案

你必须设置你的delegate ,从您正在创建的代码示例 id<UPDelegate> delegate;在您的 titleView类(class)。

所以在你的MyViewController您在哪里添加了<UPDelegate> , 创建 TitleView 的实例并将委托(delegate)设置为自我。

所以在你的MyViewController采用:

 TitleView*titleView=[[TitleView alloc]init];
titleView.delegate=self;

关于iphone - 为什么我的 iPhone 应用程序无法调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085323/

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