Доступ IBOutlet из другого класса (ObjC) - PullRequest
1 голос
/ 20 декабря 2009

Я погуглил и нашел несколько ответов, но ни один из них не заработал. У меня есть один NSObject с классом «A» и второй класс «B» без NSObject. В классе "A" определены мои IBOutlets, и я не могу понять, как получить доступ к этим выходам из класса "B" ...

Я нашел ответы на такие вопросы, как http://forums.macrumors.com/archive/index.php/t-662717.html Но они сбивают с толку.

Любая помощь будет принята с благодарностью!

Упрощенная версия кода:

aClass.h:

#import <Cocoa/Cocoa.h>

@interface aClass : NSObject {
    IBOutlet NSTextField *textField;
}
@end


aClass.m:

#import "aClass.h"

@implementation aClass
// Code doesn't matter
@end


bClass.h:

#import <Cocoa/Cocoa.h>

@interface bClass : NSObject {
}
@end


bClass.m:

#import "aClass.h"
#import "bClass.h"

@implementation bClass
    [textField setStringValue: @"foo"];
@end

Ответы [ 2 ]

2 голосов
/ 20 декабря 2009

Когда вы пишете:

У меня есть один NSObject с классом «А» и второй класс «Б» без NSObject.

Это говорит мне о том, что вы не разбираетесь в основных понятиях. Прочитайте введение Apple в цель C и учебные проекты.

1 голос
/ 19 августа 2011

Решение использует NSNotificationCenter . Вот поток, рассказывающий, как это сделать: Отправлять и получать сообщения через NSNotificationCenter в Objective-C?

Затем в методе, реагирующем на уведомление, вы вызываете метод доступа к Outlet

- (void) receiveTestNotification:(NSNotification *) notification
{

    if ([[notification name] isEqualToString:@"TestNotification"])
        //NSLog (@"Successfully received the test notification!");
        [self performSelectorOnMainThread:@selector(doIt:) withObject:nil waitUntilDone:false];
}
- (void) doIt
{
    //testLabel.text = @"muhaha";
}

Это сработало для меня, я надеюсь, что это сработает и для вас.

...