gpt4 book ai didi

iphone - 如何向 UIButton 添加属性/方法

转载 作者:行者123 更新时间:2023-12-03 20:26:10 25 4
gpt4 key购买 nike

我需要向 UIButton 添加两个额外的属性(NSString * 和 NSMutableArray *)以及三个额外的方法。如果可能的话,我还想使用父类(super class)型引用新对象。我不一定想要子类化(因为我读到它很棘手并且不推荐),但我对 Objective-C 和 iOS 开发很陌生,不知道还能做什么。

我尝试用我的子类来子类化 UIButton,通过以下方式实现正式协议(protocol):

@interface Button : UIButton <MyProtocol> ...

但是,我发现这并不像我想象的那样工作,因为 buttonWithType: 从子类返回一个对象。我还能做些什么来达到预期的结果?

--编辑:好的,我当前的代码是这样的:

@interface Button : UIButton <SteapeObject> {
ActionQueue * actions;
Meta meta;
}

@property (nonatomic, retain) ActionQueue * actions;
@property (nonatomic) Meta meta;

- (id) initWithFrame:(CGRect)frame;
...

以及实现:

- (id) initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
NSLog (@"finally");
}

return self;
}

仍然不起作用。看来当我调用时:

Button * button = [Button buttonWithType: UIButtonTypeRoundedRect];
NSLog (@"%@", [button description]);

我应该在日志中得到两个“finally”字符串和两个描述。但是,我只得到两个描述字符串:

[Session started at 2011-02-24 09:47:14 +0100.]
2011-02-24 09:47:15.431 IphoneClient3[702:207] <UIRoundedRectButton: 0x5f47690; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x5f47240>>
2011-02-24 09:47:15.461 IphoneClient3[702:207] <UIRoundedRectButton: 0x6a0f000; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x6a344b0>>

并且可以看到类型仍然是UIRoundedRectButton,但是按钮没有响应我添加的方法。实际上,由于我的重写 initWithFrame 没有被调用,所以这是可以预料的。也许我应该默认实现自定义控件...

最佳答案

据我所知,文档并没有说不建议对 UIButton 进行子类化。

我已经多次添加自定义属性 - 没有出现任何问题。唯一要做的就是使用以下命令创建按钮:

[Button buttonWithType:UIButtonTypeCustom]; // won't work for other button types though

关于iphone - 如何向 UIButton 添加属性/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096104/

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