タブバー項目を含む TabBar Controller があります。
ユーザーがタブ バーの項目を初めてタップしたときに、アラート ビューを開いて、ユーザーがちょっとしたヒントを読めるようにしたいと考えています。
いくつかのブール値 (CONFIG.tip1AlreadySeen、CONFIG.tip1AllreadySeen など) を保持するグローバル変数 (CONFIG など) があります。これらのブール値はすべて NO に初期化されます。
ユーザーがタブ バー項目をタップすると、ビュー コントローラーの viewWillAppear メソッドが実行されます。このメソッドでは、次のようなコードを入れます。
-(void) viewVillAppear: (BOOL) animated {
extern CONFIG; // <- it's not the actual code but it indicates that a global variable must be used
[super viewWillAppear: animated];
if(CONFIG.tip1AlreadySeen == NO) {
CONFIG.tip1AlreadySeen = YES;
// code for showing the alertview
}
}
奇妙なことに、このコードは 1 つのビュー コントローラーでは完全に機能しますが、別のビュー コントローラーでは機能しません。
いくつかのデバッグで、別のviewcontrollerでコードが実行されていることがわかりましたが、割り当てCONFIG.tipAlreadySeen = YESはCONFIG.tipAlreadySeenの実際の値を変更しません。この値はまだ NO です。信じられない!!!
ちょっとした回避策は、viewDidAppear メソッドを使用して値を変更することでした。
-(void) viewVillAppear: (BOOL) animated {
extern CONFIG; // <- it's not the actual code but it indicates that a global variable must be used
[super viewWillAppear: animated];
if(CONFIG.tip1AlreadySeen == NO) {
// code for showing the alertview
}
}
-(void) viewDidAppear: (BOOL) animated {
extern CONFIG;
CONFIG.tip1AlreadySeen = YES;
}
…でも、何が起こったのか本当に分からなかった!!! あなたの誰かがこの行動を説明できますか?
前もって感謝します!
マルコ