Navigation Controller gerendert wird, über die ich navigiert
Haben Euch gestolpert, bis auf dieses Problem ?
Grundsätzlich in iOS 7 Navigation Controller gerendert, die über die sub-view ich navigiert wird.
In iOS 6, das ich navigieren Sie zu ist eingeschlossen zwischen der Navigationsleiste und der Fußzeile. In iOS 7 sieht es aus wie sub-view gerendert wird full-screen, unter der Navigationsleiste und der Fußzeile. Als Ergebnis Benutzer sehen es nicht.
Hier ist, wie ich navigieren Sie zur Untersicht
BRSMyListSubViewController *tagsInfoVC = [[BRSMyListSubViewController alloc] initWithCheckinsList:self.checkinsList
selectedTag:[self tagByIndexPath:indexPath]];
[self.navigationController pushViewController:tagsInfoVC animated:YES];
Hier ist, wie ich es initialisieren in viewDidLoad
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style:UIBarButtonItemStyleBordered target:self action:@selector(logout:)];
Für was es Wert ist ich sollte auch erwähnen, dass die sub-view definiert in XIB mit Autolayout. Hier ist die Quelle meiner XIB: http://pastebin.com/6RR0zYu4
Und schließlich ist hier, wie sieht es in iOS 6
Und in iOS 7
Irgendwelche Gedanken ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich fand es heraus.
In Ihre sub-view (
BRSMyListSubViewController
in meinem Fall), inviewDidLoad
können, benötigen Sie eine der diese zweiODER
Interessanterweise in der root-view-controller diese Werte werden auf Standard gesetzt
UIRectEdgeAll
,NO
undYES
jeweils aber seinetableView
ist NICHT unter navbar und footer.Ich weiß nicht, warum es ist so unlogisch.
Es ist auch seltsam, dass
edgesForExtendedLayout
werden gemischt mit zwei anderen Eigenschaften, obwohl es eindeutig verantwortlich für das Verhalten.PS. Für diejenigen, die ausführen möchte es auf iOS 6. Surruound den code mit
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
nur sofern die version des Systems und die foundation-version nicht auf einer Linie sind.Wenn Sie nichts dagegen haben, dass eine undurchsichtige navigation bar, dann ist die einfachste Lösung könnte sein, die dazu in der view-controller schafft, dass Ihre navigation-controller:
Die Positionierung des Rahmens erlässt dann das gleiche Verhalten wie iOS6, magisch!