gpt4 book ai didi

ios - 在扩展中定义 IBOutlet 属性

转载 作者:行者123 更新时间:2023-11-29 02:50:50 25 4
gpt4 key购买 nike

我的 View Controller 开始变得太大,因此我决定将所有按钮功能移至单独的扩展中。

//MyViewController.h
@interface MyViewController : UIViewController

@end

//MyViewController+Buttons.h
@interface MyViewController (Buttons)

- (void)adjustButtons;

@end

//MyViewController+Buttons.m
@interface MyViewController ()
{

}
@property (weak, nonatomic) IBOutlet UIButton *myButton;

@end

@implementation MyViewController(Buttons)

@end

界面构建器允许我将按钮绑定(bind)到 socket ,但当我运行应用程序时,我收到以下异常:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MyViewController 0x12e501a70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key myButton

我知道应该可以在 View Controller 的扩展中定义导出。我做错了什么?

最佳答案

您声明了一个接口(interface),但没有提供实现。 (如果将 IBOutlet 更改为 ivar 而不是属性,您将收到链接器错误而不是运行时错误。)

为了自动合成属性和 ivar,其声明需要在其编译单元(通常为“MyViewController.m”)中可见。

在您的情况下,将 @interface MyViewController() 声明移动到“MyViewController+Buttons.h”,并将该 header 导入“MyViewController.m”

关于ios - 在扩展中定义 IBOutlet 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559537/

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