我对以下情况感到困惑。我有一个视图控制器(VC),它有 1 个子视图(SubV)和 1 个其他类。(classA)我还有一个从 classA 调用的事件处理程序,我希望这个事件处理程序在 VC 中更改我的 subV。
当我直接从 VC 访问 SubV 时,没关系,子视图的图像发生了变化等。但是当 classA 触发 VC 的事件处理程序时,它到达 VC,也访问了 subView 的方法,但我的 subView 没有变化!!!(我也尝试委托,但结果是一样的)
视图控制器.h
@interface ViewController : UIViewController {
.
IBOutlet SubView *subView;
ClassA *classA;
.
}
@property (retain, nonatomic) IBOutlet SubView *subView;
@property (retain, nonatomic) ClassA *classA;
视图控制器.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
}
子视图.h
@interface SubView : UIImageView
@property int state;
@property NSArray *imageArray;
- (void) RefreshView;
- (id) init;
@end
子视图.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];
}
类A.m
-(void)methodA{
[myEvent requestEvent];
}
所以,我在这里要做的是使用 Viewcontroller 中的按钮和在另一个 classA 中运行的线程访问和更改 subView