Wie erhalte ich Zugang zu meiner Anwendung Delegieren, Fenster-accessor-Methode aus einem anderen Objekt?

Wie bereits erwähnt - ich bin ein Objective-C-Neuling von der ersten Bestellung aber mit Lesen 4 physische Bücher über das Thema und eine Eimer-Belastung von ebooks und Unterlagen, die ich noch nicht finden können was ich Suche.

Habe ich eine top-level-content view-controller will, konfigurieren Sie die view-Eigenschaft von den physikalischen Abmessungen der Fenster-Eigenschaft des application-delegate. Das ist etwas, dass einige Leute haben schon gefragt, Fragen auf. ([UIScreen mainScreen] nicht schneiden Sie es aus Gründen, die bereits ausgestrahlt wurde viele Male zuvor auf diesem forum). Daher die logische Vorgehensweise wäre für die content-view-controller Lesen die Rahmen der Anwendung delegieren Fenster. Nun, die einzige Antwort, die ich gefunden habe, nahe kommt, ist die Nutzung [[[UIApplication sharedApplication] window] frame] - allerdings funktioniert dies nur, sobald die window-Eigenschaft wurde aus keyAndVisible. Die content-view-controller Lesen muss das app-delegate-Fenster-Eigenschaft vor wird es makeKeyAndVisible. Der code geht in dieser Reihenfolge....

App Delegate:

- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {
//This next line is a test window frame for R&D purposes....
    [self setWindow: [[UIWindow alloc] initWithFrame: CGRectMake(0.0f, 20.0f, 320.0f, 320.0f)]];

    if ([self window]) {
        contentViewController = [[ContentViewControl alloc] initWithNibName: nil bundle: nil]; //Content view controller instantiated here

        if (contentViewController) {
            [[self window] addSubview: [contentViewController view]];
            [[self window] layoutSubviews];
            [[self window] makeKeyAndVisible];  //Window made key and visible here
            return YES;
        }
    }

    return NO;
}

In meinem content-view-controller ist initWithNibName: nil Bundles: nil-Methode habe ich die folgenden test-code...

- (id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {
    self = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil];

    if (self) {
        NSLog(@"%@", NSStringFromCGRect([[[UIApplication sharedApplication] keyWindow] frame]));
        //This does not work.
    }

    return self;
}

Funktioniert das nicht aufgrund der Tatsache, dass App-Delegate, das Fenster ist noch nicht der Schlüssel-und sichtbar.
So, meine Frage ist also; Was ist der name meiner App Delegate-Klasse' Instanz? Ich kenne die App Delegat Klasse Namen standardmäßig myApplicationNameAppDelegate aber ich bin nach der Instanz Namen. Ich will ersetzen Sie den Aufruf [[UIApplication sharedApplication] keyWindow] durch so etwas wie;

[myAppDelegatesInstanceName window].

Baut diese ein wenig, wie stellt man Zugriff auf Methoden in anderen Ziel-Objekte, die nicht Umfang Nachkommen Objekt, das die Abfragen?

Wie gesagt, ich bin ein total noob all dies und dies ist wahrscheinlich eine weitere dumme noobie Frage, aber es ist eine, die noch niemand zu haben scheint, beantwortet in einer einfachen Weise.

(Prozedural - my home turf - es gibt eine fülle von Möglichkeiten, um das Fenster Zeug nach unten in die anderen Ebenen der Anwendungsbereich reicht von machen Sie das Fenster Global zugänglich, das ganze Programm-suite, vorbei es ab, wie ein bestimmter parameter durch die verschiedenen Funktions-Hierarchien - aber dieses Ziel Zeug scheint ein abweichen von etablierten, prozedurale Praxis).

Wenn jemand helfen kann, wäre ich wirklich dankbar. Dieses Zeug ist definitiv nicht intuitiv!
V. V.

InformationsquelleAutor der Frage VectorVictor | 2011-04-22

Schreibe einen Kommentar