故事板自定义类被忽略

Posted

技术标签:

【中文标题】故事板自定义类被忽略【英文标题】:Storyboard custom class is ignored 【发布时间】:2017-08-24 19:14:27 【问题描述】:

我正在尝试将自定义视图控制器添加到我的情节提要中。视图控制器KTResearchUploadViewController 出现在“自定义类”类下拉列表中,我已经选择了它。在视图控制器内部(在情节提要上),我有一个链接到 KTResearchUploadViewController 的按钮,用于在主要操作上调用方法 handleUploadButtonPress

按下按钮时,我收到此错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController handleUploadButtonPress:]: unrecognized selector sent to instance 0x11c33b740'

它似乎试图在UIViewController 上调用handleUploadButtonPress 而不是KTResearchUploadViewController。我在这里做错了什么?

KTResearchUploadViewController.h

#import <UIKit/UIKit.h>

@interface KTResearchUploadViewController : UIViewController

@end

KTResearchUploadViewController.m

#import "KTResearchUploadViewController.h"

@interface KTResearchUploadViewController ()

@end

@implementation KTResearchUploadViewController

- (void)viewDidLoad 
    [super viewDidLoad];
    // Do any additional setup after loading the view.


- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

- (IBAction)handleUploadButtonPress:(id)sender 
    NSLog(@"Button pressed!");


@end

【问题讨论】:

***.com/questions/17852287/… 尝试将 ibaction 添加到您的 .h 【参考方案1】:

将 IBAction 添加到您的 .h

#import <UIKit/UIKit.h>

@interface KTResearchUploadViewController : UIViewController
- (IBAction)handleUploadButtonPress:(id)sender;
@end

还要确保 IB 中的按钮与代码之间存在连接

https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiosAppsSwift/ConnectTheUIToCode.html

【讨论】:

我尝试了这两个,现在我收到了这个错误:'[&lt;UIViewController 0x11c438f20&gt; setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key uploadButton.' 上传按钮的密钥来自哪里? uploadButton 是我给故事板中的按钮和KTResearchUploadViewController 之间的联系起的名字 尝试将其更改为 handleUploadButtonPress - 如果它仍然无法正常工作,我可以在大约 10 分钟内对其进行测试 我在 .m 和 .h 文件中都定义了 handleUploadButtonPressuploadButton 只是对UIButton 的引用(虽然我实际上并没有使用它)。【参考方案2】:

我不确定这是否是原始问题的原因,但我刚刚遇到了类似的问题并最终出现在这里。最终我发现我的ViewController 子类不是我在 Xcode 中运行的目标的成员。由于某种原因,在这种情况下它只是默认使用ViewController

【讨论】:

以上是关于故事板自定义类被忽略的主要内容,如果未能解决你的问题,请参考以下文章

样式类被忽略

我的材质 UI 自定义类被材质 UI 的默认类覆盖

使用故事板中定义的自定义类

在自定义 UITableViewCell 中忽略自动布局

集合视图内的表视图

故事板中的自定义 UIView