/ / klasa niestandardowa dziedzicząca z UIButton nie wykryta w isKindOfClass: - ios, iphone, cel-c, uibutton

niestandardowa klasa dziedzicząca z UIButton nie wykryta w isKindOfClass: - ios, iphone, cel-c, uibutton

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 № 1

To 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.