Zugang IBOutlet von anderer Klasse (ObjC)
-
20-09-2019 - |
Frage
Ich habe gegoogelt um und fand einige Antworten, aber ich einer von ihnen nicht an der Arbeit. Ich habe eine NSObject mit der Klasse „A“ und einer zweiten Klasse „B“ ohne NSObject. In der Klasse „A“ sind meine IBOutlets definiert, und ich kann nicht scheinen, um herauszufinden, wie man diese Ausgänge aus der Klasse „B“ für den Zugriff auf ...
Ich habe Fragen beantwortet gefunden wie http: // Foren. macrumors.com/archive/index.php/t-662717.html Aber sie sind verwirrend.
Jede Hilfe wäre sehr dankbar!
vereinfachte Version des Code:
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
Lösung
Wenn Sie schreiben:
Ich habe eine NSObject mit der Klasse „A“ und eine zweite Klasse „B“, ohne eine NSObject.
Es sagt mir, dass Sie nicht über Ihren Kopf um die grundlegenden Konzepte. Lesen Sie über Apples Objective-C Einführung und die Tutorial-Projekte.
Andere Tipps
Die Lösung wird mit NSNotificationCenter . Hier ist ein Thread sagen Ihnen, wie es geht: senden und empfangen von Nachrichten über NSNotificationCenter in Objective-C?
Dann in dem Verfahren auf die Benachrichtigung reagiert, rufen Sie eine Methode, um die Outlet Zugriff
- (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";
}
Das ist für mich gearbeitet, ich hoffe, es tut dies auch für Sie.