xib에서 뷰 컨트롤러의 클래스가 잘못되었을 수 있습니다.
프로젝트를 다운로드했습니다.
당신이 얻는 오류는
'NSUnknownKeyException', 이유 : '[<UIViewController 0x3927310> setValue : forUndefinedKey :] :이 클래스는 키 문자열에 대한 키 값 코딩 호환이 아닙니다.'
Second
뷰 컨트롤러 MainWindow.xib
가 UIViewController
대신SecondView
클래스를 가지고 있기 때문에 발생합니다 . 올바른 클래스로 변경하면 문제가 해결됩니다.
그건 그렇고, Objective-C에서 "string"과 같은 이름을 갖는 것은 좋지 않습니다. 런타임 이름 충돌을 초대합니다. 실습용 앱에서도 한 번 피하십시오. 이름 충돌은 추적하기가 매우 어려우므로 시간을 낭비하고 싶지 않습니다.
이 오류의 또 다른 이유는 한 컨트롤러에서 다른 컨트롤러로 요소를 복사하여 붙여 넣을 때 Xcode는이 요소를 새 컨트롤러로 편집하고 다시 연결 한 후에도 원래 컨트롤러에 대한 링크를 유지합니다.
이 오류의 또 다른 이유는 다음과 같습니다.
나쁜 콘센트.
당신도 한 제거 하거나 이름을 바꿀 당신의 출구 이름 .h
파일을.
파일 .xib
또는 .storyboard
연결 관리자 에서 제거하십시오 .
하나 더 가능한 이유
(내 경우에는) 바인딩 가능한 속성을 가진 UIView 확장 및 바인딩 가능한 속성 (예 : 그림자, 모서리 반경 등)에 대한 설정 값을 UIView 확장에서 제거하십시오 (어떤 이유로 든).하지만 다음 <userDefinedRuntimeAttributes>
은 xml에 남아 있습니다 ( foo.storyboard
).
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="shadowColor">
<color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
<real key="value" value="50"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="point" keyPath="shadowOffset">
<point key="value" x="5" y="5"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
<real key="value" value="16"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidthValue">
<real key="value" value="0.0"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
솔루션 : 마우스 오른쪽 버튼으로 클릭 foo.storyboard
> 소스 코드로 열기> keyPath로 검색 (예 : shadowRadius)> </userDefinedRuntimeAttributes>
문제를 일으킨 원인 삭제