objective-c - 关于遍历 View 上所有的 UIButton 的问题,求问
某草草
某草草 2017-04-28 09:04:24
0
4
643

关于遍历 View 上所有的 UIButton 的问题,求问

for (id obj in self.view.subviews) {
if ([obj isKindOfClass:[UIButton Class]]) {
UIButton theButton = (UIButton)obj;
theButton.xxx = ooo;
}
}

为什么在控件上遍历子控件时我们要在 for in 中取 id 属性再做 if ([obj isKindOfClass:[UIButton Class]])判断而不能直解取 uibutton ,像下面这样:

for (id obj in self.view.subviews) {
UIButton theButton = (UIButton)obj;
theButton.xxx = ooo;

}

某草草
某草草

membalas semua(4)
小葫芦

Anda tidak mengambil UIButton secara langsung, atau saya salah faham, anda menukar jenis secara eksplisit.

曾经蜡笔没有小新

Tidak semestinya ada UIButton sahaja dalam subview, tetapi mungkin terdapat kawalan lain Anda memaksa semua kawalan ke UIButton, yang sangat berbahaya dan akan ranap jika anda tidak berhati-hati.
Cara selamat adalah dengan terlebih dahulu menentukan sama ada kawalan yang diperolehi adalah UIButton, dan kemudian menukar paksa Jenis kawalan pada masa ini sebenarnya sudah diketahui Penukaran paksa hanya menggunakan kaedah dan sifat UIButton tanpa melaporkan ralat.
Selain itu, id bukan atribut, sayang, ia adalah jenis oc istimewa, anda boleh menganggapnya sebagai objek. Mana-mana objek boleh ditaip dengannya.

Ty80

Ini kerana self.view anda tidak semestinya hanya mempunyai butang. Apakah yang perlu anda lakukan jika terdapat label di dalamnya apabila anda menggunakan uibutton untuk memaksa pemindahan? Ia akan melaporkan ralat.

滿天的星座

Melainkan anda memastikan semua subview paparan adalah jenis butang, anda pasti akan membuat ralat apabila anda menekan kepala keldai pada badan manusia.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan