ios - Mac開發 NSView 新增的子控制項不顯示
phpcn_u1582
phpcn_u1582 2017-05-17 10:05:24
0
2
1300

現在寫了一個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上了,情況如下圖:





##可以看到右側兩個NSView成功的添加了兩個NStextfeild,###但是實際運行的介面卻怎麼也看不到這兩個文字框,實際上是變透明了,可以點擊到,運行時效果是這樣的: ################ ###我的問題是: 為什麼addsubview成功卻在運行時不能正常顯示出子控件,兩個控件變透明了,我並沒有進行透明或背景等相關的設定。 ### 是不是跟使用c OC 混編有關,NSVIew向下傳遞的時候還經過了一層c 封裝的東西? ###希望有經驗的朋友給指點一下,感激不盡,謝謝! ###
phpcn_u1582
phpcn_u1582

全部回覆(2)
滿天的星座

你能把創建NSTextField和添加到view的程式碼貼出來嗎?
我試了圖形介面直接拖進去或程式碼添加都能顯示。

淡淡烟草味

找了一天,最後找到問題原因:沒有在主線程中操作UI控件,就是父View addsubview的時候是在子線程中進行的。
附文1:http://blog.csdn.net/msss00/a... iOS addsubview後不顯示原因總結)
附文2:http://blog.csdn.net/libaineu...(iOS子執行緒更新UI的兩種方法)
問題解決,也感謝@tomdfriwel幫忙。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!