Возможно ли реализовать initWithNubName для пользовательского класса, расширяющего UIView.
Пример:
.h
@interface UIPullerView : UIView
{
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;
.m
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
NSBundle *bundle = nibBundleOrNil==nil ? [NSBundle mainBundle] : nibBundleOrNil;
NSString *nibName = nibNameOrNil==nil ? @"UIPullerView" : nibNameOrNil;
if (self == [[bundle loadNibNamed:nibName owner:self options:nil] objectAtIndex:0])
{
NSLog(@"yes, the same class");
}
return self;
}
некоторые классы контроллеров вызывают это
UIPullerView *puller = [[UIPullerView alloc] initWithNibName:nil bundle:nil];
Это не рабочий пример, потому что я не устанавливаю для первого объекта XIB значение self.Если бы я был, я бы потерял ссылку на основной класс, верно?Поэтому я хотел бы добавить метод, который будет читать файл XIB и копировать объект из XIB в себя.Я не хочу использовать UIViewController, но UIView, поэтому никакие дополнительные представления не должны быть добавлены к основному виду.
Также, как я устанавливаю XIB:
Я бы сделал
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
...
self = [[bundle loadNibNamed:nibName owner:self options:nil] objectAtIndex:0]
return self;
}
, но это не правда?
Возможно ли это?