Saya membuat aplikasi tempat saya menambahkan subview ke tampilan menggunakan addSubview:
di IBAction
. Dengan cara yang sama, ketika tombol dengan yang IBAction
disentuh lagi harus memanggil removeFromSuperview
subview yang ditambahkan itu IBAction
:
KODE PSEUDO
-(IBAction)showPopup:(id)sender
{
System_monitorAppDelegate *delegate = (System_monitorAppDelegate *)[[UIApplication sharedApplication] delegate];
UIView *rootView = delegate.window.rootViewController.view;
if([self popoverView] is not on rootView)
{
[rootView addSubview:[self popoverView]];
}
else
{
[[self popoverView] removeFromSuperview];
}
}
ios
cocoa-touch
uiview
uikit
pmerino
sumber
sumber
addSubview:
metode (yang mungkin terjadi pertama kali), di lain waktu, Anda akan mencapai bagian lain karena tampilan kedua sekarang adalah subview dari yang pertama. Bukankah itu yang Anda coba lakukan? Anda mungkin mencari mekanisme lain seperti memberikan pengontrol tampilan secara sederhana?popoverView
adalah subview dari rootView (rootViewController). Saya ingin memeriksa apakah ada di layar (jika memiliki rootView sebagai superview) dan jika demikian, hapus atau tambahkan jika tidak[self popoverView]
mengembalikan baru dibuat popover setiap kali? tidak dapat menambahkan tampilan "di atasnya" jika itu adalah tampilan yang sama, menambahkan tampilan yang sudah ada tanpa operasi. jikapopoverView
metode membuat yang baru setiap saat, maka metode itu tidak akan selalu ada dalam hierarki tampilanCoba ini:
sumber
sumber
Persamaan Swift akan terlihat seperti ini:
sumber
Periksa superview dari subview ...
sumber
Kondisi if Anda harus berjalan seperti
sumber
isDescendantOfView:
?Di sini kami menggunakan dua pandangan berbeda. Tampilan induk adalah tampilan di mana kita mencari tampilan keturunan dan memeriksa apakah ditambahkan ke tampilan induk atau tidak.
sumber