カスタム クラスからコードを実行して、viewController でオブジェクトを非表示にしようとしていますが、オブジェクトは nil です。
FirstViewController.h
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
IBOutlet UILabel *testLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *testLabel;
- (void) hideLabel;
FirstViewController.m testLabel を合成し、それを非表示にする機能を持っています。viewDidAppear から関数を呼び出すと機能しますが、他のクラスから呼び出したいです。他のクラスから呼び出された場合、testLabel は nil です
#import "FirstViewController.h"
#import "OtherClass.h"
@implementation FirstViewController
@synthesize testLabel;
- (void) hideLabel {
self.testLabel.hidden=YES;
NSLog(@"nil %d",(testLabel==nil)); //here I get nil 1 when called from OtherClass
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
OtherClass *otherClass = [[OtherClass alloc] init];
[otherClass hideThem];
//[self hideLabel]; //this works, it gets hidden
}
OtherClass.h
@class FirstViewController;
#import <Foundation/Foundation.h>
@interface OtherClass : NSObject {
FirstViewController *firstViewController;
}
@property (nonatomic, retain) FirstViewController *firstViewController;
-(void)hideThem;
@end
OtherClass.m は、FirstViewController で hideLabel 関数を呼び出します。私の元のプロジェクトでは (これは明らかに例ですが、元のプロジェクトは動作中です) ここでいくつかのデータをダウンロードし、ダウンロードが完了したときに読み込みラベルとインジケーターを非表示にしたい
#import "OtherClass.h"
#import "FirstViewController.h"
@implementation OtherClass
@synthesize firstViewController;
-(void)hideThem {
firstViewController = [[FirstViewController alloc] init];
//[firstViewController.testLabel setHidden:YES]; //it doesn't work either
[firstViewController hideLabel];
}
何か案は?