0

我无法在Objective C中的3个视图之间传递变量。只要只有2个,我就可以将数据从一个类传递到另一个类,但是如果我添加另一个需要访问相同委托方法的视图,我就无法做到所以。

让我试着解释一下:

View1 访问 View2 中声明的委托方法。但是,如果我添加另一个名为 View3 的视图并需要访问 View2 中的委托方法,我不能。我正确声明了所有内容,并且能够引用委托方法,但我仍然无法在 View3 中输入该引用。

4

2 回答 2

0

如果你想将数据从 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];

}
于 2012-08-03T13:21:59.497 回答
0

两个对象不能同时是第三个的委托。那是你的问题吗?如果是这样,请考虑使用 NSNotification 来发送消息:多个对象可以订阅通知。

于 2012-08-03T11:31:02.733 回答