我最近升级到Xcode 8,并且Storyboard出现问题。
如果我打开项目但没有打开情节提要,它将编译并运行良好。打开情节提要板后,出现有关IB Designables的多个错误,如下所示。
这些视图是唯一使用自定义视图的视图,TextFieldEffects
也是BEMCheckbox
我使用Cocoapods导入的视图。
我最近升级到Xcode 8,并且Storyboard出现问题。
如果我打开项目但没有打开情节提要,它将编译并运行良好。打开情节提要板后,出现有关IB Designables的多个错误,如下所示。
这些视图是唯一使用自定义视图的视图,TextFieldEffects
也是BEMCheckbox
我使用Cocoapods导入的视图。
Answers:
您可以尝试以下方法之一找出原因:
IBDesignablesAgentCocoaTouch
在此目录中查找日志:
~/Library/Logs/DiagnosticReports
并查看原因。注意:对于使用Catalina的用户:寻找
IBDesignablesAgent-iOS_<DATE>-<MAC_NAME>.crash
@IBDesignable UIView
在情节提要中选择时,转到“编辑器”->“调试选定的视图” ,然后查看堆栈跟踪。
删除派生数据文件夹。
Xcode Preference -> Location -> Derived Data
/Users/YourMacName/Library/Developer/Xcode/DerivedData
清理项目Shift
+ Command
+ Alt
+ K
。
建立您的专案Command
+ B
。
Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'
。我不知道该IBDesignablesAgentCocoaTouch
流程调用init(frame:)
,而不是init?(coder aDecoder:)
。
init(frame:)
UIButton子类之后,一切都很好
我通过执行以下操作解决了该问题:
File > Workspace settings
。DerivedData
文件夹位置打开Finder应用程序。DerivedData
文件夹,然后删除与您的项目相对应的文件夹。Editor > Refresh all views
。更新
有时只是直接去Editor > Refresh all views
上班。如果Refresh all views
已禁用,请退出Xcode,然后重试。
我只是删除失败的视图,然后按Command + Z撤消删除。这个对我有用。
如果以后编辑失败的视图,则可能再次发生错误,请再次执行上述操作。
我在CocoaPod 1.5.0中遇到了这个问题。解决方案是,一旦出现此错误,请重新安装pod(再次安装pod),否则您可以使用CocoaPod 1.4.0。它在1.4.0中正常工作(至少对我而言)。
更新:
在Podfile中添加以下脚本可帮助我解决1.5.0中的问题
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete('CODE_SIGNING_ALLOWED')
config.build_settings.delete('CODE_SIGNING_REQUIRED')
end
end
参考:https : //github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
s work for me, you should add
结束到代码的最后。
对于找不到我的IBDesignablesAgentCocoaTouch
文件的任何人(例如我),或者尝试从编辑器“调试选定的视图”时遇到错误,这是调试那些“无法渲染”错误的另一种方法。
打开“控制台”应用程序,从边栏中选择您当前的Mac(默认情况下可能会自动选择它),然后在搜索栏上搜索“ IBSceneUpdate”,然后按Enter。
这样,每次遇到IBDesignable
无法渲染的Xcode错误时,您还将获得一个新的“ IBSceneUpdate”条目,其中包含有关该错误的更多详细信息。
至少这是我调试IBDesignable
错误的方法!
如果您将xib文件用于自定义uiview。试试这个:
从
Bundle.main.loadNibNamed("UserView", owner: self, options: nil)
至:
let bundle = Bundle(for: UserView.self)
bundle.loadNibNamed("UserView", owner: self, options: nil)
尝试对可能用于情节提要中的自定义视图的任何xib文件禁用“使用特征变化”(“身份和类型”面板)。
在以下位置查看崩溃报告
~/Library/Logs/DiagnosticReports
替代方法:
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
并查看崩溃日志只需打开情节提要->编辑器->刷新所有视图即可。这为我工作。
我尝试清理并运行该项目无法解决此问题。
但是关闭并重新打开了项目。
当我调试它时,我发现有一些类正在修改UI。通常,marquelabel是UILabel的子类,或者是UIView的任何其他子类,并在运行时绘制ui并与Autolayout引擎冲突。尝试为这些自定义视图提供固定的宽度或高度。如果仍不能解决您的问题,请尝试以下解决方案:-
解决方案1: -在Pod文件中取消注释#use_frameworks。
解决方案2: -尝试删除派生数据
我遇到了同样的问题,来到这里试图弄清楚发生了什么。我注意到评分最高的答案,而且答案本身也无济于事,因为IBDesignable不存在于日志文件夹中,并且我已经尝试了所有其他选项,但是在注释中,我注意到有人在谈论框架初始化。
我决定尝试注释掉我的UIView的IBDesignable扩展,它立即解决了该问题。因此,要解决此问题,请查找引起问题的扩展,并通过创建IBDesignable类并提供所需的初始化程序,确保设置所需的init,如下所示:
@IBDesignable class RoundedView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sharedInit()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
sharedInit()
}
func sharedInit() {
}
}
重要提示:请记住将新类添加到正在使用可设计项的项目中。
更新到最新的XCode版本后,我遇到了这个问题。尝试了上述多种解决方案后,我只使用Xcode,然后关闭系统并打开它,这对我来说很有效。
进行必要的更改后,更改情节提要或在我的情况下更改为.xib,以在“ XCode 7”中打开并保存并关闭。这只是解决错误的一种制止措施,但最终您将需要修复它们或执行此操作,直到无法再解决为止。
这对我来说是最简单的方法:将此脚本添加到您的 Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
next if target.product_type == "com.apple.product-type.bundle"
target.build_configurations.each do |config|
config.build_settings['CONFIGURATION_BUILD_DIR'] = '$PODS_CONFIGURATION_BUILD_DIR'
end
end
end
@IBDesignable的此解决方法可在以下位置找到:https : //github.com/CocoaPods/CocoaPods/issues/5334