Вы должны добавить этот метод в ваш MyViewController
класс.
Итак, вам нужно добавить объявление метода и его относительную реализацию.
//MyViewController.h
@interface MyViewController
{
int _controllerId;
}
@property (nonatomic, assign) int controllerId;
@end
//MyViewController.m
@implementation MyViewController
@synthesize controllerId = _controllerId;
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle andId:(int)contrId
{
if(self = [super initWithNibName:nibName bundle:nibBundle])
{
self.controllerId = contrId;
}
return self;
}
@end
Теперь вы можете создатьэкземпляр класса MyViewController
, подобный следующему.
MyViewController myController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil andID:0];
self.viewController1 = myController;
[myController release]; // if viewController1 has a retain policy
Я предлагаю не выделять init и назначать новый экземпляр свойству в той же строке.Фактически, если ваше свойство viewController1 имеет политику сохранения, вы создаете утечку памяти.В качестве альтернативы:
self.viewController1 = [[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil andID:0] autorelease]; // if viewController1 has a retain policy
Некоторые примечания
Поскольку initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
является публичным методом, вы можете вызывать его, не передавая идентификатор для вашего нового метода.Чтобы избежать этого, вы можете включить (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle andId:(int)contrId
в качестве назначенных инициализаторов.Таким образом, вы не можете создать контроллер без идентификатора.