現在寫了一個Mac平台下的Demo程序,上層使用c 和OC混合編程,viewcontroller後綴也改成了.mm,界面是使用storyboard直接拖曳的,添加了兩個自定義的NSView, 如下圖中所示:
程式設計的時候我將右邊的兩個自訂的NSView都透過介面傳遞下去了,將兩個nsview的指標轉換為void 類型,中間經過了一層c 層的封裝的模組,最後傳遞到底層,再次將兩個void 類型的指標強轉回nsview* 類型,之後在兩個nsview上addsubview,添加了兩個nstextfield,調試的時候顯示subview的數量確實是1,說明成功添加上了。
建立控制項和新增子控制項程式碼:
_TextField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20) ];
[_parentView addSubview:_TextField];
之後用xcode自帶的UI繼承調試工具,顯示也成功把兩個nstextfield加到nsview上了,情況如下圖:
你能把創建
NSTextField
和添加到view
的程式碼貼出來嗎?我試了圖形介面直接拖進去或程式碼添加都能顯示。
找了一天,最後找到問題原因:沒有在主線程中操作UI控件,就是父View addsubview的時候是在子線程中進行的。
附文1:http://blog.csdn.net/msss00/a... iOS addsubview後不顯示原因總結)
附文2:http://blog.csdn.net/libaineu...(iOS子執行緒更新UI的兩種方法)
問題解決,也感謝@tomdfriwel幫忙。