Возможно ли реализовать initWithNubName для пользовательского класса, который расширяет UIView.iOS initWithNibName для 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];
Это не рабочий пример, потому что я не» t установите первый XIB ob ject to self. Если бы я хотел бы получить ссылку на главный класс? Поэтому я хотел бы добавить метод, который будет читать XIB-файл и реплицировать объект из XIB в себя. Я не хочу использовать UIViewController, но UIView, поэтому никаких дополнительных представлений не следует добавлять к основному виду.
Se также, как я установил XIB:
Я бы сделать
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
...
self = [[bundle loadNibNamed:nibName owner:self options:nil] objectAtIndex:0]
return self;
}
, но это не так верно?
Возможно ли это?
I Я не уверен, что понимаю, что вы пытаетесь достичь. – onnoweb
Я просто хочу добавить метод initWithNibName в мой класс, который расширяет UIView (не UIViewController). – xpepermint
Я так не думаю. Метод «initWithNibName» определен в классе UIViewController в SDK, а не в UIView, поэтому вы не можете переопределить этот метод в своем классе, который расширяет UIView. – indiantroy