2013-07-22 5 views
0

Я определил собственный метод 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 раз, когда приложение запускается. Каждый контроллер представления имеет собственный класс.

+6

У вас есть 5 контроллеров представления, подклассы этого ... 'initWithCoder' называется 5 раз ...« Эй, что вы ожидали? » – Cyrille

+0

Какой еще метод следует использовать? – user1626438

+0

Если вы показываете 5 viewControllers, это нормально, чтобы показать в 5 раз больше этих сообщений ... Это не вопрос «Какой еще метод я должен использовать?» – Peres

ответ

0

Если вам нужно другое изображение для каждой вкладки, вы должны продублировать этот метод 5 раз в каждом из ваших подклассов, вместо того, чтобы выполнять ту же работу в «общем предке» - суперклассе.

Смежные вопросы