2014-01-08 7 views
0

Я пытаюсь создать общий контроллер представления и 2 других вида, которые оба наследуют.Наследование на контроллере просмотра Цель c

Теперь это общий вид (то, что я думаю, что это отношение - если что-то еще нужно я добавлю его):

@interface CardGameViewController() 
@property (strong, nonatomic) IBOutlet UITabBarItem *TabSelection; 
@property (strong, nonatomic) CardMatchingGame *game; 
@property (strong, nonatomic) IBOutlet UIButton *resetButton; 
@property (weak, nonatomic) IBOutlet UILabel *scoreLable; 
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons; 
@end 

@implementation CardGameViewController 

- (CardMatchingGame*)game 
{ 
    if(!_game) _game = [[CardMatchingGame alloc]initWithCardCount:[self.cardButtons count] usingDeck:[self createDeck] gameMode:[self getActiveTabWithString:self.TabSelection.description]]; 
    return _game; 
} 

- (Deck*)createDeck //abstract 
{ 
    return nil; <------- Relevant generic function 
} 

и эти 2 файла, наследуемые упомянутый файл:

SetGameViewController.h:

#import "CardGameViewController.h" 

@interface SetGameViewController : CardGameViewController 

@end 

SetGameViewController.m:

#import "SetGameViewController.h" 
#import "SetCardDeck.h" 

@interface SetGameViewController() 

@end 

@implementation SetGameViewController 

-(Deck*)createDeck 
{ 
    return [[SetCardDeck alloc]init]; 
} 

@end 

и второй один:

PlayingCardGameViewController.h:

#import "CardGameViewController.h" 

@interface PlayingCardGameViewController : CardGameViewController 

@end 

PlayingCardGameViewController.m:

#import "PlayingCardGameViewController.h" 
#import "PlayingCardDeck.h" 

@interface PlayingCardGameViewController() 

@end 

@implementation PlayingCardGameViewController 

- (Deck*)createDeck 
{ 
    return [[PlayingCardDeck alloc]init]; 
} 
@end 

У меня также есть панели вкладок навигатор для переключения между 2 видами.

Дело в том, первый (SetGameViewController) никогда не инстанцирован независимо от того, что я делаю,

Значение функции createDeck никогда не вызывается,

В то время как второй один (PlayingCardGameViewController) в порядке каждый раз.

Что я пробовал:

размещение точек останова на основной функции зрения - (CardMatchingGame*)game.

этот только вызван, когда я пытаюсь запустить второй рабочий вид, а не плохой.

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

ответ

0

Установить точки останова на пустой метод createDeck в базовом классе, а также на метод в ваших двух подклассах.

Я полагаю, что при настройке контроллера панели вкладок в IB (Interface Builder) вы сделали одну из вкладок экземпляром родового CardGameViewController вместо SetGameViewController.

+0

Пробовал это тоже ... на самом деле я сменил проблематичный файл как «PlayingCardGameViewController», а он все еще не работает – Itzik984

+0

i новичок в объекте c, можно ли связать одно свойство с 2 видами или более? даже несмотря на то, что свойство (любое, которое связано с обоими представлениями) кажется ОК связным, на него отвечает только одно представление. как это может быть? – Itzik984

+0

Вы продолжаете использовать термин view и view controller взаимозаменяемо. Не. Контроллер представления не является представлением. Они совершенно разные. Вы спрашиваете, можно ли подключить свойство IBOutlet к нескольким представлениям? Ответ - нет. –

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