Jetzt habe ich ein Demoprogramm für die Mac-Plattform geschrieben. Das Viewcontroller-Suffix wurde ebenfalls in .mm geändert. Die Benutzeroberfläche wird direkt per Drag & Drop über das Storyboard erstellt NSViews wurden hinzugefügt, wie in der Abbildung unten gezeigt:
Beim Programmieren habe ich die beiden benutzerdefinierten NSViews auf der rechten Seite über die Schnittstelle übergeben, die Zeiger der beiden NSViews in void-Typen konvertiert, eine Schicht gekapselter C++-Schichtmodule durchlaufen und sie schließlich an die unterste Schicht übergeben Zwei void-Typzeiger zurück auf den Typ nsview* und dann den beiden nsviews einen Subview hinzufügen, wodurch zwei nstextfields hinzugefügt werden. Beim Debuggen wird angezeigt, dass die Anzahl der Unteransichten tatsächlich 1 beträgt, was darauf hinweist, dass sie erfolgreich hinzugefügt wurden. Erstellen Sie Steuerelemente und fügen Sie Code für untergeordnete Steuerelemente hinzu:
_TextField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20) ];
[_parentView addSubview:_TextField];
Danach habe ich das mit xcode gelieferte Tool zum Debuggen der UI-Vererbung verwendet und es zeigte, dass zwei NSTextfields erfolgreich zu NSView hinzugefügt wurden, wie unten gezeigt:
Die beiden Textfelder sind jedoch in der tatsächlichen Laufoberfläche nicht sichtbar und können angeklickt werden dies:
Hängt es mit der Verwendung der gemischten C++-OC-Kompilierung zusammen? Durchläuft NSVIew bei der Weitergabe auch eine Ebene der C++-Kapselung?
Ich hoffe, dass erfahrene Freunde mir einen Rat geben können. Vielen Dank!
你能把创建
NSTextField
和添加到view
的代码贴出来吗?我试了图形界面直接拖进去或代码添加都能显示。
找了一天,最终找到问题原因:没有在主线程中操作UI控件,就是父View addsubview的时候是在子线程中进行的。
附文1: http://blog.csdn.net/msss00/a... iOS addsubview后不显示原因总结)
附文2: http://blog.csdn.net/libaineu...(iOS子线程更新UI的两种方法)
问题得到解决,也感谢@tomdfriwel帮助。