Stworzyłem niestandardową klasę przycisków z pewnymi dodatkowymi właściwościami, które dziedziczą po UIButtonie. Dodaje się ją w widoku podobnym do następującego za pomocą normalnego przycisku:
EFButton *btn = [EFButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(500, 100, 100, 44);
btn.backgroundColor = [UIColor lightGrayColor];
btn.userInteractionEnabled = NO;
[self.view addSubview:btn];
UIButton *nBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
nBtn.frame = CGRectMake(500, 100, 100, 44);
nBtn.backgroundColor = [UIColor lightGrayColor];
nBtn.userInteractionEnabled = NO;
[self.view addSubview:nBtn];
Zapętlając obiekty w widoku, takie jak:
for (id view in self.view.subviews)
{
if ([view isKindOfClass:[EFButton class]])
{
//** dsnt come here **
NSLog(@"EFButton Class");
EFButton *btn = view;
}
if ([view isKindOfClass:[UIButton class]])
{
//** come here **
NSLog(@"UIButton Class");
UIButton *btn = view;
}
}
UIButton działa, ale nie jest w stanie isKindOfClass: [klasa EFButton]. Pomóż mi w tym, co robię źle lub w jaki sposób należy to zrobić.
Odpowiedzi:
5 dla odpowiedzi № 1To dlatego, że buttonWithType
jest metodą klasową UIButton
, zwraca UIButton
wpisz, chociaż twój EFButton
dziedziczy UIButton
, nie może wrócić EFButton
rodzaj
Zacytuj programistę dokumenty
If you subclass UIButton, this method does not return an instance of your subclass
PS: Nie myślę o dziedziczeniu UIButton
to dobry sposób.