我最近升级到了Xcode 8,我遇到了故事板的问题。
如果我打开项目并且我没有打开Storyboard,它将编译并运行得很好。一旦我打开故事板,我就会收到有关IB Designables的多个错误,如下所示。
这些视图是我使用Cocoapods导入的TextFieldEffects
和BEMCheckbox
自定义视图的唯一视图。
答案 0 :(得分:115)
您可以尝试以下方法之一来找出原因:
在此目录中查找import './<your style path>/<your style file>.scss'
日志:
IBDesignablesAgentCocoaTouch
并查看原因。
转到编辑器 - &gt;在故事板中选择~/Library/Logs/DiagnosticReports
时调试所选视图,并查看堆栈跟踪。
删除Derive Data文件夹。
@IBDesignable UIView
清理您的项目Xcode Preference -> Location -> Derived Data
/Users/YourMacName/Library/Developer/Xcode/DerivedData
+ Shift
+ Command
+ {{ 1}}。
构建项目Alt
+ K
。
答案 1 :(得分:60)
我通过执行以下操作解决了问题:
File > Workspace settings
。DerivedData
文件夹的位置打开Finder应用程序。DerivedData
文件夹,然后删除与项目对应的文件夹。Editor > Refresh all views
。<强>更新强>
有时直接转到Editor > Refresh all views
工作。如果Refresh all views
被禁用,请退出Xcode并重试。
答案 2 :(得分:42)
我只是删除失败的视图,然后按命令+ Z撤消删除。它对我有用。
如果稍后编辑失败的视图,可能会再次出现错误,请再次执行上述操作。
答案 3 :(得分:34)
我在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
答案 4 :(得分:8)
尝试为您的故事板中使用的自定义视图的任何xib文件禁用“使用特征变体”(“标识和类型”面板)。
答案 5 :(得分:7)
我的问题是通过从派生数据文件夹中删除文件夹(与此项目相关)来解决的。 您可以通过单击文件 - &gt;来完成此操作。项目设定 - &gt; 然后单击箭头符号deside /Users/.../Xcode/DerivedData 单击DerivedData文件夹,您将看到名为folders的项目删除那些。退出xcode打开你的项目,使用这一步Product-&gt; clean清理项目 然后构建项目:Product-&gt; Build 这些将解决这个问题。
答案 6 :(得分:6)
在我的@IBDesignable
类中添加以下代码即可达到目的。
override init(frame: CGRect) {
super.init(frame: frame)
}
答案 7 :(得分:6)
Correct answer provided by @Maria:
在
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR] RewriteCond %{HTTP_HOST} ^www.olddomain.com$ RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L] </IfModule>
上查看崩溃报告
替代方式:
~/Library/Logs/DiagnosticReports
Spotlight
console.app
Crash reports
并查看崩溃日志答案 8 :(得分:2)
当我调试这个时,我发现有一些类正在修改UI。通常marquelabel是UILabel的子类或任何其他类的子类UIView并在运行时绘制ui并与Autolayout引擎冲突。尝试为这些自定义视图指定固定宽度或高度。如果它无法解决您的问题,请尝试以下解决方案: -
解决方案1: - 在您的pod文件中取消注释#use_frameworks。
解决方案2: - 尝试删除派生数据
答案 9 :(得分:2)
打开你的故事板 - &gt;编辑 - &gt;刷新所有视图。 这项工作适合我。
答案 10 :(得分:1)
我遇到了同样的问题,来到这里试图弄清楚发生了什么。我注意到评分最高的答案,而且答案本身并没有帮助我,因为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() {
}
}
重要提示:请记住,将新类添加到您正在使用的设计项上。
答案 11 :(得分:1)
我尝试清理并运行项目无法解决此问题。
但是关闭并重新打开了项目。
答案 12 :(得分:0)
答案 13 :(得分:0)
在我的@IBDesignable类中崩溃,是因为我使用了自定义类的颜色,并强制展开了@IBDesignable类的颜色,而展开时发现nil无效
因此,您需要在IBDesignablesAgent-iOS_[Date]_[YourMac].crash
上的~/Library/Logs/DiagnosticReports
位置上找到{{1}},然后使用受尊重的文件路径来了解崩溃的原因。
现在,您必须检查受尊重的文件。
答案 14 :(得分:0)
这对我来说是最简单的方法:将此脚本添加到您的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
答案 15 :(得分:0)
更新到最新的XCode版本后,我遇到了这个问题。尝试了上述多种解决方案后,我只使用了Xcode,然后关闭了系统并打开它,对我有用。
答案 16 :(得分:0)
遇到相同的错误: 如果已自定义UITextField并使用界面生成器,则控制台中的错误是 -对类“ CustomField”使用未实现的初始化程序“ init(frame :)”
添加了初始化程序以纠正错误
答案 17 :(得分:0)
如果您将xib文件用于自定义uiview。试试这个:
更改自
Bundle.main.loadNibNamed("UserView", owner: self, options: nil)
收件人:
let bundle = Bundle(for: UserView.self)
bundle.loadNibNamed("UserView", owner: self, options: nil)
答案 18 :(得分:0)
对于无法找到该IBDesignablesAgentCocoaTouch
文件的任何人(例如我),或者尝试从编辑器“调试选定的视图”时遇到错误,这是调试那些“无法渲染”错误的另一种方法。
打开“终端”应用程序,从边栏中选择您当前的Mac(默认情况下可能会自动选择它),然后在搜索栏中搜索“ IBSceneUpdate”,然后按Enter。每次遇到无法渲染IBDesignable的Xcode错误时,您还将获得一个新的“ IBSceneUpdate”条目,其中包含有关该错误的更多详细信息。至少我无法调试IBDesignable
错误!
答案 19 :(得分:0)
就我而言,我使用的是一个子类化UIView
的库。它正在使用IB_DESIGNABLE
,并且错过了对[super awakeFromNib]
的调用。一旦我添加了对此方法的调用,该错误就会消失。
我不确定它实施IB_DESIGNABLE
的事实是否会对此产生影响。
答案 20 :(得分:0)
进行必要的更改后,更改故事板或在我的情况下更改.xib以在“XCode 7”中打开,保存并关闭。这只是一个解决错误的止损措施,但最终你需要修复它们或直到你不再能够这样做。