Frage

Hier ist mein Problem: Meine App hat eine Symbolleiste, wo Sie zwischen verschiedenen Ansichten wechseln können. Die wichtigste oder zumindest die ein beim Start ist in auf Landscape-Modus, dann, wenn Sie zu jeder anderen Ansicht gehen in Porträt ist. Das Problem kommt, wenn Sie versuchen, die ersten zu gehen zurück (Landschaft), die Ansicht erscheint im Porträt daher alle Ansicht angezeigt ist falsch. (Ist es mehr oder weniger klar? Sorry, wenn scheint chaotisch). Einiger Code Ich habe hier:

V1Controller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

V2Controller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(IBAction)goToV1 {
 V1Controller *v1 = [[V1Controller alloc] init];
 [self.view.superview addSubview:v1.view];
}

Vielleicht etwas mit dem Objekt v1 vor der Ansicht hinzufügen? Ich weiß nicht, brauchen Ihre Hilfe.

Problem gelöst Ich fehlte einen Satz in der Ansicht Übergang, um die aktuelle Ansicht vom Super entfernen. Auch was @Brad sagte. Danke.

-(IBAction)goToV1 {
     V1Controller *v1 = [[V1Controller alloc] init];
     [self.view.superview addSubview:v1.view];
     [self.view removeFromSuperview];
    }
War es hilfreich?

Lösung

Wenn Sie sagen:

return (interfaceOrientation == UIInterfaceOrientationPortrait);

Sie erlaubt es nur Porträt gedreht werden.

Wenn Sie drehen zu wollen Porträt und dann zurück zu Landschaft, nur zurückkehren "JA".

Die gleiche Logik gilt, wenn Sie sagen

return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);

Sie sind effektiv zu sagen: „Lassen Sie es gedreht ein Weg sein - aber nie zurück in die andere Richtung“

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