在 iOS Swift 项目中找不到“UIView”的接口声明

Posted

技术标签:

【中文标题】在 iOS Swift 项目中找不到“UIView”的接口声明【英文标题】:Cannot find interface declaration for 'UIView' in iOS Swift Project 【发布时间】:2015-09-18 14:21:06 【问题描述】:

我有一个swift 项目,我正在通过桥接头文件使用MBProgressHUD。我遇到的问题是 UIView 似乎没有被识别为类型,我不知道为什么。

在我的桥接头中:

#import "MBProgressHUD.h"

我在尝试构建时遇到的错误都是一样的:

Cannot find interface declaration for 'UIView', superclass of MBProgressHUD.

我检查了 MBProgressHUD 文件,我可以看到它确实导入了以下内容:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>

#import "MBProgressHUD.h"
#import "CSNotificationView.h"

有没有其他人遇到过类似的问题?如果是这样,您知道问题是什么,我该如何解决?

【问题讨论】:

你能把你项目的相关部分分享到github吗?这可能与项目设置相关或某处的拼写错误。 您是否通过 CocoaPods 安装了 MBProgressHUD?还是手动下载? 我手动下载并包含在项目中。我应该补充一点,在我按照 Xcode 的建议更新 ios 9 项目之前,这曾经可以正常工作。 【参考方案1】:

我也遇到了同样的问题,这就是我在 swift 2 中使用 MBProgressHud 所做的事情

1) 指定 use_frameworks!在您的 Podfile 中使用框架。

2) 在桥接头中添加#import,使用尖括号代替双引号,例如 -

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>
#import <MBProgressHUD/MBProgressHUD.h>

3) 在您的 swift 文件中还导入 MBProgressHUD,例如

import UIKit
import MBProgressHUD

现在你可以像使用 MBProgressHud 一样 -

MBProgressHUD.showHUDAddedTo(self.view, animated: true);

希望它会有所帮助。

【讨论】:

感谢您的建议 - 原来的错误已经消失,但是我现在看到一个错误 'MBProgressHUD/MBProgressHUD.h' file not found,它显示在桥接头文件中 MBProgressHUD 的导入中。你知道为什么吗? 在桥接头文件中导入时请使用尖括号,例如#import 是的,我在头文件中使用尖括号(我完全按照您的步骤操作)。不过,我仍然不确定为什么会收到未找到文件的错误。你以前遇到过这个问题吗? 嘿,确保你没有创建两个桥接头文件。我知道这听起来很傻,但可能是这样。【参考方案2】:

删除现有的bridging header 文件并添加一个新文件。

确保在目标部分而不是项目部分下的SWIFT_OBJC_BRIDGING_HEADER 中添加桥接头路径。

【讨论】:

谢谢 - 刚刚尝试了删除和重新添加文件的建议,但我似乎仍然收到相同的错误消息。我还仔细检查了文件路径是否存在并且桥接头实际上在同一个地方(它是)。【参考方案3】:

您也可以尝试将预编译的前缀头文件 (.pch) 添加到您的项目中。您将在 File/New/Other 下找到它,添加 #import &lt;UIKit/UIKit.h&gt;clause,然后在目标的构建设置中,在 Apple LLVM 7.0 - Language 下,将 Precompile Prefix Header 标志设置为 yes 并添加 .pch 文件,如这个“YourProjectName/YourProject-Prefix.pch”。

另见this answer。

【讨论】:

【参考方案4】:

如果您在 CocoaPods 中包含 MBProgressHUD 库,请尝试包含与此类似的行

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>

#import "MBProgressHUD.h"

BridgeHeader.h 并在构建设置中的 Objective-C Bridging Header 键中选择标题。 为了测试是否正确添加了库,我尝试在 ViewController 中显示此指令的进度:

MBProgressHUD.showHUDAddedTo(self.view, animated: true);

我在一个新项目中尝试过它并且它有效。

【讨论】:

感谢您的建议 - 我也尝试过,但没有帮助。我已经稍微更新了我的问题以反映它。 如我修改后的答案中所述,检查它是否对您有帮助。

以上是关于在 iOS Swift 项目中找不到“UIView”的接口声明的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中找不到 opencv 框架

在添加的 CocoaPods 项目中找不到一些导入

更新 Firebase 后在 swift 项目中找不到“InstanceID”和“InstanceID TokenHandler”

在myproject-swift.h中找不到接口声明

Swift:UIView.insertSubview( , aboweSubview) 在 iOS 8 上不起作用

iOS Swift UIView 动画跳回到开头