我无法在Objective C中的3个视图之间传递变量。只要只有2个,我就可以将数据从一个类传递到另一个类,但是如果我添加另一个需要访问相同委托方法的视图,我就无法做到所以。
让我试着解释一下:
View1 访问 View2 中声明的委托方法。但是,如果我添加另一个名为 View3 的视图并需要访问 View2 中的委托方法,我不能。我正确声明了所有内容,并且能够引用委托方法,但我仍然无法在 View3 中输入该引用。
我无法在Objective C中的3个视图之间传递变量。只要只有2个,我就可以将数据从一个类传递到另一个类,但是如果我添加另一个需要访问相同委托方法的视图,我就无法做到所以。
让我试着解释一下:
View1 访问 View2 中声明的委托方法。但是,如果我添加另一个名为 View3 的视图并需要访问 View2 中的委托方法,我不能。我正确声明了所有内容,并且能够引用委托方法,但我仍然无法在 View3 中输入该引用。
如果你想将数据从 1 个类传递到 3 个类,你最好使用 NSNotification。你可以这样使用。
在第一个接收类中:
@implementation TestClass1
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (id) init
{
self = [super init];
if (!self) return nil;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveNotification1:)
name:@"TestNotification"
object:nil];
return self;
}
- (void) receiveNotification1:(NSNotification *) notification
{
NSLog(@"receive 1");
}
@end
在第二接收类:
@implementation TestClass2
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (id) init
{
self = [super init];
if (!self) return nil;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveNotification2:)
name:@"TestNotification"
object:nil];
return self;
}
- (void) receiveNotification2:(NSNotification *) notification
{
NSLog(@"receive 2");
}
@end
在第三接收类:
@implementation TestClass3
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (id) init
{
self = [super init];
if (!self) return nil;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveNotification3:)
name:@"TestNotification"
object:nil];
return self;
}
- (void) receiveNotification3:(NSNotification *) notification
{
NSLog(@"receive 3");
}
@end
在帖子类中:
- (void) yourMethod
{
[[NSNotificationCenter defaultCenter]
postNotificationName:@"TestNotification"
object:self];
}
两个对象不能同时是第三个的委托。那是你的问题吗?如果是这样,请考虑使用 NSNotification 来发送消息:多个对象可以订阅通知。