이제 Mac 플랫폼용 데모 프로그램을 작성했습니다. 상위 계층은 C++와 OC를 혼합하여 프로그래밍되었습니다. 인터페이스도 .mm로 변경되었습니다. 스토리보드를 사용하여 직접 드래그 앤 드롭합니다. 아래 그림과 같이 NSView가 추가되었습니다.
프로그래밍할 때 인터페이스를 통해 오른쪽에 있는 두 개의 사용자 정의 NSView를 전달하고, 두 개의 nsview의 포인터를 void 유형으로 변환하고, C++ 계층 캡슐화된 모듈 계층을 통과한 다음, 마지막으로 이를 하위 계층으로 전달했습니다. 두 개의 void 유형 포인터를 다시 nsview* 유형으로 되돌린 다음 두 개의 nsview에 subview를 추가하여 두 개의 nstext 필드를 추가합니다. 디버깅 중에 하위 뷰 수가 실제로 1로 표시되어 성공적으로 추가되었음을 나타냅니다.
컨트롤 생성 및 하위 컨트롤 코드 추가:
이후 xcode와 함께 제공되는 UI 상속 디버깅 도구를 사용했는데 아래와 같이 두 개의 nstext필드가 nsview에 성공적으로 추가된 것으로 나타났습니다.
오른쪽의 두 NSView가 두 개의 NStextfeild를 성공적으로 추가한 것을 볼 수 있습니다.
그러나 실제 실행 중인 인터페이스에서는 두 개의 텍스트 상자가 보이지 않으며 실제로는 실행 효과를 클릭할 수 있습니다. 이거:
제 질문은: addsubview가 성공했지만 런타임 중에 하위 컨트롤을 정상적으로 표시할 수 없는 이유는 무엇입니까? 투명도나 배경과 관련된 설정을 하지 않았습니다.
C++ OC 혼합 컴파일 사용과 관련이 있나요? NSVIew도 전달될 때 C++ 캡슐화 계층을 통과합니까?
경험이 많은 친구들이 조언을 해주셨으면 좋겠습니다. 감사합니다.
생성하는 코드를 게시할 수 있나요?
NSTextField
和添加到view
?그래픽 인터페이스로 직접 드래그하거나 코드를 추가하여 표시해 보았습니다.
하루 검색 끝에 드디어 문제의 원인을 찾았습니다. 메인 스레드에서 UI 컨트롤이 작동하지 않았습니다. 즉, 하위 스레드에서 상위 View addsubview가 수행되었습니다.
첨부1: http://blog.csdn.net/msss00/a... iOS addsubview가 표시되지 않는 이유 요약)
첨부2: http://blog.csdn.net/libaineu... (iOS 하위 스레드가 UI를 업데이트하는 두 가지 방법)
문제가 해결되었습니다. @tomdfriwel의 도움에도 감사드립니다.