Если он не вызывает viewDidLoad
, то первое, что нужно проверить, это то, что в вашей раскадровке вы правильно установили TabSynth
в качестве пользовательского класса вашего контроллера представления.Кроме того, я не вижу NSLog
в вашем viewDidLoad
методе.Откуда вы знаете, что он не вызывается?
Кстати, знаете ли вы, что вы можете помещать не-пользовательские объекты в перо или раскадровку?Я думаю, что это может помочь вам упростить ваш код.Например, вы можете иметь класс ElementViews
, определенный следующим образом:
ElementViews.h
@interface ElementViews : NSObject
@property (assign, nonatomic) IBOutlet UIImageView *tome;
@property (assign, nonatomic) IBOutlet UIButton *synthButton;
@property (assign, nonatomic) IBOutlet UIImageView *tome1;
@end
, а затем в вашем классе TabSynth
вместо трех выходов для каждого элемента,у вас есть только один выход:
TabSynth.h
@class ElementViews;
@interface TabSynth : UIViewController
@property (nonatomic, retain) IBOutlet ElementViews *waterViews;
@property (nonatomic, retain) IBOutlet ElementViews *fireViews;
@property (nonatomic, retain) IBOutlet ElementViews *airViews;
@property (nonatomic, retain) IBOutlet ElementViews *earthViews;
@property (nonatomic, retain) IBOutlet ElementViews *darkViews;
@property (nonatomic, retain) IBOutlet ElementViews *lightViews;
@property (nonatomic, retain) IBOutlet UIButton *synthButtonLarv;
@property (nonatomic, retain) IBOutlet UIButton *synthButtonAmoeb;
@property (nonatomic, retain) IBOutlet UIButton *synthButtonLarv1;
@property (nonatomic, retain) IBOutlet UIButton *synthButtonAmoeb1;
...
В вашей раскадровке вы перетаскиваете общий «Объект» (похожий на оранжевый куб) в вашу TabSynth
сцену.Измените его пользовательский класс на ElementViews
и его идентификационную метку на Water Views
.Подключите выход waterViews
TabSynth
к этому новому объекту ElementViews
и подключите выходы объекта ElementViews
к трем видам воды (изображения tome
и tome1
и synthButton
кнопка).Повторите эти действия для остальных пяти элементов.
Затем вы можете упростить свой метод viewDidLoad
следующим образом:
- (void)configureElementViews:(ElementViews *)elementViews state:(int)state {
if (state > 0) {
elementViews.tome.hidden = NO;
elementViews.tome1.hidden = YES;
elementViews.synthButton.hidden = NO;
}
}
- (void)viewDidLoad {
extern int gTomeAir;
extern int gTomeDark;
extern int gTomeEarth;
extern int gTomeFire;
extern int gTomeLight;
extern int gTomeWater;
extern int gAmoebaeNum;
extern int gLarvaeNum;
synthButtonAmoeb.hidden=YES;
synthButtonAmoeb1.hidden=NO;
synthButtonLarv.hidden=YES;
synthButtonLarv1.hidden=NO;
[self configureElementViews:self.waterViews state:gTomeWater];
[self configureElementViews:self.fireViews state:gTomeFire];
[self configureElementViews:self.airViews state:gTomeAir];
[self configureElementViews:self.earthViews state:gTomeEarth];
[self configureElementViews:self.darkViews state:gTomeDark];
[self configureElementViews:self.lightViews state:gTomeLight];
}