Я определил собственный метод initWithCoder, потому что я пытаюсь создать элементы панели инструментов. У меня есть 5 контроллеров представления в моей раскадровке, каждая из которых имеет собственный класс. Все они являются дочерними классами класса контроллера начального представления. Основная проблема заключается в том, что вместо того, чтобы просто изменять изображение элемента панели вкладок одного класса, он изменяет изображение каждого элемента панели табуляции, который нажат. Кроме того, изображения не будут изменены на изображение элемента с невыделенной вкладкой, если элемент панели вкладок не выбран. Каждый контроллер представления дочерних классов получает тот же метод init. Моя основная проблема заключается в том, как я могу сделать так, чтобы каждый класс, независимо от ребенка или родителя, получал другой метод init?InitWithCoder, вызываемый несколько раз
-(id)initWithCoder:(NSCoder *)aDecoder
{
NSLog(@"First");
if (self = [super initWithCoder:aDecoder])
{
NSLog(@"Second");
[[self tabBarItem] setFinishedSelectedImage:[UIImage imageNamed:@"RedStar2.png"]
withFinishedUnselectedImage:[UIImage imageNamed:@"Star3.png"]];
//instead of just changing the image of the class's tab bar item, it changes the image of all
classes tab bar items
[[self tabBarItem] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor
redColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal];
}
return self;
}
Ключевые слова «первый» и «второй» называются 5 раз, когда приложение запускается. Каждый контроллер представления имеет собственный класс.
У вас есть 5 контроллеров представления, подклассы этого ... 'initWithCoder' называется 5 раз ...« Эй, что вы ожидали? » – Cyrille
Какой еще метод следует использовать? – user1626438
Если вы показываете 5 viewControllers, это нормально, чтобы показать в 5 раз больше этих сообщений ... Это не вопрос «Какой еще метод я должен использовать?» – Peres