이제 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++ 캡슐화 계층을 통과합니까?
경험이 많은 친구들이 조언을 해주셨으면 좋겠습니다. 감사합니다.
滿天的星座2017-05-17 10:07:24
생성하는 코드를 게시할 수 있나요? NSTextField
和添加到view
?
그래픽 인터페이스로 직접 드래그하거나 코드를 추가하여 표시해 보았습니다.
淡淡烟草味2017-05-17 10:07:24
하루 검색 끝에 드디어 문제의 원인을 찾았습니다. 메인 스레드에서 UI 컨트롤이 작동하지 않았습니다. 즉, 하위 스레드에서 상위 View addsubview가 수행되었습니다.
첨부1: http://blog.csdn.net/msss00/a... iOS addsubview가 표시되지 않는 이유 요약)
첨부2: http://blog.csdn.net/libaineu... (iOS 하위 스레드가 UI를 업데이트하는 두 가지 방법)
문제가 해결되었습니다. @tomdfriwel의 도움에도 감사드립니다.