我有两个班,A班和B班。
A类有一个方法
-(void)methodA:(id)sender
{
}
和B类有一个方法
-(void)methodB:(id)sender
{
}
现在我在方法A中正在进行一些工作,所以一旦完成,我想从methodA发送通知:到methodB:所以我可以在通知的基础上做一些操作。
那我怎么能这样做?任何人都可以指导我,因为我是obj-c的新手吗?
答案 0 :(得分:1)
使用委托。来自wiki的简单代码:访问http://en.wikipedia.org/wiki/Delegation_pattern
答案 1 :(得分:0)
最简单的方法。
在B级-(id)initWithNibName: Bundle:
中,您需要添加注册NSNotifications。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(methodB:)
name:@"methodAFinished"
object:nil];
}
return self;
}
然后你需要在A类方法A:function。
中进行以下操作 - (void)methodA:(id)sender {
// Once you have completed your actions do the following
[[NSNotificationCenter defaultCenter] postNotificationName:@"methodAFinished" object:nil];
}
- (void)methodB:(id)sender {
// This will then be called in the other class, do whatever is needed in here.
}
希望对你有用!
此外,请不要忘记,在B组的-(void)viewDidDisappear:animated
功能中,您需要取消注册通知。
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
那应该完成你所要求的。如果这不是您正在工作或在下面发表评论,请添加您的问题,我可以纠正我的答案。
答案 2 :(得分:0)
在B组注册观察员,如:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(method:) name:@"notificationName" object:nil];
并发布A类通知,如:
[NSNotificationCenter defaultCenter] postNotificationName:@"notificationname" object:nil];
删除B类中的Observer,当它被解除分配时,如
[[NSNotificationCenter defaultCenter]removeObserver:self];