Frage

Die App ist ein viewbased Projekttyp. Ich bin ein NSObject in einer Ansicht XIB (UIView Nib) verwendet wird, übernehmen diese Aufgabe die topbar der App sein.

MainController UIViewController lädt das Einstiegsbild. es sieht so aus,

UIViewController Mainviewcontroller Bild

Ich wollte eine Draufsicht laden (neu, nennt es X) Entwickelte separat im topbarview (rote Farbe) in dem obigen Bild.

Nun, ich habe NSObject, die wohnt innen „X“ und bindet alle Ereignisse und haben die volle Kontrolle über X, es ist ein Singleton-Objekt.

in der NSObject Klasse I haben eine Methode, um die Selbstobjektinstanz und eine Instanz von uiview zurückzukehren ( „X“) er steuert.

Die Methoden sind,

-(UIView*)ReturnTopBarView
{
            NSLog(@"called 2");
    return topBarObject.topBarView;
}

//Provides the top bar instance to all the view controllers.
//Singleton Implementation.
+ (id)GetTopBarObject
{
    if(topBarObject == nil)
    {
        NSLog(@"called 1");
        return [[TopBarObject alloc] init];
    }
    return topBarObject;    
}

Die topbarview ist die voll entwickelt topbarview ( „X“), die topbarview (rotes Farbsegment in dem Bild oben) in der Hauptansicht Controllers kommen hat.

Ich schrieb ein Verfahren in den Hauptansicht-Controller wie:

-(void)SetHomeScreen
{
    self.topView = [[TopBarObject GetTopBarObject] ReturnTopBarView];
}

Ich rufe die -(void)SetHomeScreen in meinem appdelegate.applicationdidfinishlaunching als [viewcontroller SetHomeScreen]

Dies ist eigentlich nennt die entsprechenden Methoden in der NSObject (TopBarObject Klasse), aber ich nicht die Ansicht sieht aktualisiert in (Mainviewcontroller.topbarview). Dies ist das Hauptproblem jetzt.

habe ich eine benutzerdefinierten obere Leiste und benutzerdefinierte untere Leiste mit Bildern und Symbolen. Also wähle ich diese Art der Gestaltung. Ich bin nicht sicher, ob dies der beste Weg ist, ich suche nur für ein optimales Systemdesign dieser Arbeit effizienter zu gestalten. Wenn Sie denken, es eine andere Möglichkeit ist, die weit weit gut als diese bitte teilen Sie es mit mir ist.

War es hilfreich?

Lösung

Ich sehe, dass die Singleton ist falsch. Es sollte wie folgt sein:

+ (id)GetTopBarObject {
    if(topBarObject == nil) {
        topBarObject = [[TopBarObject alloc] init];
    }
    return topBarObject;
}

In Ihrem Code die topBarObject wird nie ausgelöst und deshalb jedes Mal GetTopBarObject es genannt wird, erzeugt eine neue TopBarObject und kehrt es ...

Andere Tipps

Wo in appdelegate.applicationdidfinishlaunching ist es genannt?
Wenn Sie anrufen, bevor die Ansicht alle tatsächlich Setup ist tun, ist man gleich Null mit etwas Einstellung.
versuchen Sie, ein viewcontroller.view; Vor [viewcontroller SetHomeScreen]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top