Sekarang saya telah menulis program Demo untuk platform Mac Lapisan atas diprogramkan menggunakan campuran c++ dan OC Akhiran viewcontroller juga telah ditukar kepada .mm Antara muka terus diseret dan digugurkan menggunakan papan cerita NSViews telah ditambah, seperti yang ditunjukkan dalam rajah di bawah:
Apabila pengaturcaraan, saya lulus dua NSView tersuai di sebelah kanan melalui antara muka, menukar penunjuk dua nsviews kepada jenis void, melalui lapisan modul berkapsul lapisan C++, dan akhirnya menghantarnya ke lapisan bawah dua penunjuk taip void kembali ke taip nsview* sekali lagi, dan kemudian tambahkan subview pada dua nsviews, sambil menambah dua nstextfields Semasa penyahpepijatan, ia menunjukkan bahawa bilangan subview memang 1, menunjukkan bahawa ia telah berjaya ditambahkan.
Buat kawalan dan tambah kod kawalan kanak-kanak:
_TextField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20) ];
[_parentView addSubview:_TextField];
Selepas itu, saya menggunakan alat penyahpepijatan warisan UI yang disertakan dengan xcode, dan ia menunjukkan bahawa dua medan nstext telah berjaya ditambahkan pada nsview, seperti ditunjukkan di bawah:
Anda dapat melihat bahawa kedua-dua NSViews di sebelah kanan telah berjaya menambah dua NStextfeilds,
Walau bagaimanapun, kedua-dua kotak teks tidak dapat dilihat dalam antara muka berjalan yang sebenarnya, ia telah menjadi telus dan boleh diklik ini:
Soalan saya ialah: Mengapa addsubview berjaya tetapi tidak dapat memaparkan sub-kawalan seperti biasa semasa masa jalanan Kedua-dua kawalan menjadi telus. Saya tidak membuat sebarang tetapan yang berkaitan dengan ketelusan atau latar belakang.
Adakah ia berkaitan dengan penggunaan kompilasi campuran c++ OC NSVIew juga melalui lapisan enkapsulasi c++ apabila ia diturunkan?
Saya harap kawan-kawan yang berpengalaman dapat memberi saya nasihat. Saya sangat berterima kasih.
Bolehkah anda siarkan kod yang mencipta
NSTextField
和添加到view
?Saya cuba menyeretnya terus ke dalam antara muka grafik atau menambah kod untuk memaparkannya.
Selepas mencari selama sehari, akhirnya saya menemui punca masalah: kawalan UI tidak dikendalikan dalam utas utama, iaitu, induk View addsubview telah dilakukan dalam thread anak.
Lampiran 1: http://blog.csdn.net/msss00/a... Ringkasan sebab mengapa addsubview iOS tidak dipaparkan)
Lampiran 2: http://blog.csdn.net/ libaineu... (Dua kaedah untuk sub-benang iOS untuk mengemas kini UI)
Masalah telah diselesaikan, dan terima kasih kepada @tomdfriwel atas bantuannya.