최근에 Xcode 8로 업그레이드했으며 스토리 보드에 문제가 있습니다.
프로젝트를 열었고 스토리 보드가 열려 있지 않으면 컴파일되고 제대로 실행될 것입니다. 스토리 보드를 열면 아래와 같이 IB Designables에 대한 여러 오류가 발생합니다.
이러한 뷰에서 사용자 정의보기를 사용하는 유일한 도면이다 TextFieldEffects
와 BEMCheckbox
내가 Cocoapods를 사용하여 가져올 것이다.
최근에 Xcode 8로 업그레이드했으며 스토리 보드에 문제가 있습니다.
프로젝트를 열었고 스토리 보드가 열려 있지 않으면 컴파일되고 제대로 실행될 것입니다. 스토리 보드를 열면 아래와 같이 IB Designables에 대한 여러 오류가 발생합니다.
이러한 뷰에서 사용자 정의보기를 사용하는 유일한 도면이다 TextFieldEffects
와 BEMCheckbox
내가 Cocoapods를 사용하여 가져올 것이다.
답변:
다음 중 하나를 시도하여 원인을 파악할 수 있습니다.
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에서이 문제에 직면했습니다. 해결책은이 오류가 표시되면 포드를 다시 설치 (포드 설치 다시)하는 것입니다. 또는 대신 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
코드의 마지막 end`.
내 @IBDesignable
수업에 다음 코드를 추가 하면 속임수가되었습니다.
override init(frame: CGRect) {
super.init(frame: frame)
}
UITextView
. (1) init(frame: CGRect, textContainer: NSTextContainer?)
, (2) init?(coder aDecoder: NSCoder)
. 그런 다음 재구성하고 경고 (오류)가 사라졌습니다. 빌드 폴더를 정리할 필요조차 없습니다.
해당 IBDesignablesAgentCocoaTouch
파일을 찾을 수 없거나 편집기에서 '선택된 뷰 디버그'를 시도 할 때 오류가 발생하는 다른 사용자에게는 다음과 같은 "렌더링 실패"오류를 디버깅하는 방법이 있습니다.
사이드 바에서 '콘솔'앱을 열고 현재 Mac (기본적으로 자동 선택됨)을 선택한 다음 검색 창에서 "IBSceneUpdate"를 검색하고 Enter 키를 누르십시오.
이렇게하면 IBDesignable
렌더링 할 수없는 Xcode 오류가 발생할 때마다 오류에 대한 자세한 내용이 포함 된 새로운 "IBSceneUpdate"항목이 표시됩니다.
그것은 적어도 내 IBDesignable
오류 를 디버깅 할 수있는 방법입니다 !
충돌 보고서 확인
~/Library/Logs/DiagnosticReports
대체 방법 :
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
충돌 로그 를 확인 하고 검토 하십시오.스토리 보드를 열고-> 편집기-> 모든 뷰를 새로 고치십시오. 이것은 나를 위해 일합니다.
이것을 디버깅 할 때 UI를 수정하는 클래스가 있다는 것을 알았습니다. 일반적으로 marquelabel은 UILabel의 서브 클래스 또는 UIView를 서브 클래 싱하고 런타임에 UI를 그리고 클래스가 Autolayout 엔진과 충돌하는 다른 클래스입니다. 이러한 사용자 정의보기에 고정 너비 또는 높이를 지정하십시오. 그래도 문제가 해결되지 않으면 다음 해결책을 시도하십시오.
해결 방법 1 : -주석 해제 #use_frame은 포드 파일 내에서 작동합니다.
해결 방법 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() {
}
}
중요 : 설계 대상을 사용중인 항목에 새 클래스를 추가해야합니다.
이것이 가장 쉬운 방법입니다.이 스크립트를 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