私は以下の状況について混乱しています。ビューコントローラー(VC)があり、1つのサブビュー(SubV)と1つの他のクラスがあります。(classA)また、classAから呼び出されるイベントハンドラーがあります。このイベントハンドラーでVCのsubVを変更します。
VCから直接SubVにアクセスすると、OK、サブビューの画像が変更されます。しかし、classAがVCのイベントハンドラーをトリガーすると、VCに到達し、subViewのメソッドにもアクセスしますが、subViewに変更はありません!!! (私もデリゲートを試しますが、結果は同じです)
ViewController.h
@interface ViewController : UIViewController {
.
IBOutlet SubView *subView;
ClassA *classA;
.
}
@property (retain, nonatomic) IBOutlet SubView *subView;
@property (retain, nonatomic) ClassA *classA;
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.subView = [self.subView init];
self.classA = [[ClassA alloc] init];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(eventListener:) name:@"eventType" object:nil];
}
- (void) eventListener:(NSNotification *) not
{
[self.subView RefreshView]; // it doesnt work! calls refreshView method but no change
}
- (IBAction)buttonPressed:(id)sender
{
[self.subView RefreshView]; // it works perfect
}
SubView.h
@interface SubView : UIImageView
@property int state;
@property NSArray *imageArray;
- (void) RefreshView;
- (id) init;
@end
SubView.m
- (void) RefreshView{
[self stopAnimating];
self.imageArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"a.png"], nil];
self.animationDuration = 1;
self.animationImages = self.imageArray;
self.animationRepeatCount = 0;
[self startAnimating];
}
ClassA.m
-(void)methodA{
[myEvent requestEvent];
}
だから、私がここでやろうとしているのは、Viewcontrollerのボタンと別のclassAで実行されているスレッドを使用してsubViewにアクセスして変更することです