検索

ホームページ  >  に質問  >  本文

ios - Mac 開発 NSView に追加された子コントロールが表示されない

Mac プラットフォームでデモ プログラムを作成しました。上位層は c と OC を組み合わせてプログラムされています。ビューコントローラーのサフィックスも .mm に変更されています。インターフェイスは、ストーリーボードを使用して直接ドラッグ アンド ドロップされています。次の図に示すように、2 つのカスタム NSView が追加されました:

プログラミングの際、右側の 2 つのカスタム NSView をインターフェイス経由で渡し、2 つの nsview のポインターを void 型に変換し、中央に C 層でカプセル化されたモジュールの層を渡しました。それを最下層に移動し、2 つの void 型ポインタを再び nsview* 型に強制的に戻します。次に、2 つの nsview に addsubview を追加し、2 つの nstextfields を追加します。デバッグ中に、サブビューの数が確かに 1 であることが示されます。追加が成功したことを示します。
コントロールを作成し、サブコントロール コードを追加します:

リーリー

その後、xcode に付属の UI 継承デバッグ ツールを使用したところ、以下に示すように、ディスプレイで 2 つの nstextfield が nsview に正常に追加されました。
右側の 2 つの NSView が 2 つの NStextfeild を正常に追加していることがわかります。 ただし、これら 2 つのテキスト ボックスは、実際に実行中のインターフェイスでは表示されません。実際、これらは透明になり、クリックできるようになります。実行時の効果は次のとおりです:



私の質問は次のとおりです: addsubview は成功するのに、実行時にサブコントロールを正常に表示できないのはなぜですか? 2 つのコントロールが透明になります。透明度や背景に関連する設定を行っていません。 それは c OC 混合コンパイルの使用に関連していますか? NSVIew は、受け渡されるときに c カプセル化の層も通過しますか? 経験豊富な友人が私にアドバイスをくれることを願っています。とても感謝しています、ありがとう!

phpcn_u1582phpcn_u15822742日前1334

全員に返信(2)返信します

  • 滿天的星座

    滿天的星座2017-05-17 10:07:24

    を作成するコードを投稿していただけますか? NSTextField和添加到viewそれをグラフィカルインターフェイスに直接ドラッグするか、コードを追加して表示しようとしました。

    返事
    0
  • 淡淡烟草味

    淡淡烟草味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 を更新するための 2 つの方法)
    @tomdfriwel の助けにも感謝し、問題は解決しました。

    返事
    0
  • キャンセル返事