Video: Stake a point 2025
Du vil kanskje slette detaljvisningskontrollobjektet fra iPad-storyboardet for vår iOS-app (men vær sikker på at du ikke sletter ClassView-filer i DetailView-kontrolleren i Project navigator). Du erstatter forholdet mellom Split View-kontrolleren og detaljvisningskontrollen med en til Weather-kontrolleren.
Værskontrolleren ble valgt vilkårlig her - du kunne like enkelt ha erstattet det med noen av de andre visningskontrollerne. Dette er detaljvisningen brukeren vil se når appen er lansert.
Følgende trinn viser deg hvordan du bytter detaljvisningskontrollen.
-
I dokumentoversikten eller på lerretet, velg navigeringskontrollen som er tilknyttet detaljvisningskontrollen, og trykk på Slett.
Det kan være lettest å velge detaljvisningskontrollen i dokumentoversikten for å markere den. Da kan du sikkert finne Navigasjonskontrollen ved siden av den.
-
Velg detaljvisningskontrollen i dokumentoversikten eller lerretet og trykk på Slett også.
Du må opprette et nytt forhold mellom Split View-kontrolleren og Weather-kontrolleren.
-
Velg Split View-kontrolleren på storyboard eller Document Outline, Kontroll-dra til Weather-kontrolleren, og velg deretter Relationship - Detail View Controller fra popup-menyen som vises.
Det endelige resultatet av det som har blitt lagt til i storyboardet så langt, skal se slik ut. Ting har blitt omorganisert litt for klarhetens skyld. Kontroller at alt er oppkalt ettersom du omarrangerer visningskontrollerne. Deretter kan du zoome inn og ut for å se hva som gjør det mest logiske arrangementet.
Du må også gjøre noen endringer i programmet: DidFinishLaunchingWithOptions:. Legg til koden i fet skrift til den metoden i AppDelegate. m.
- (BOOL) søknad: (UIApplication *) søknad didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {UISplitViewController * splitViewController = (UISplitViewController *) selv. vindu. rootViewController; hvis ([splitViewController. ViewControllers [1] isKindOfClass: [UINavigationController class]]) { UINavigationController * detailNavigationController = [splitViewController. viewControllers lastObject]; splitViewController. delegere = (id) navigasjonskontrolleren.topViewController; } ellers splitViewController. delegate = [splitViewController. viewControllers lastObject]; … resten av metoden}
Endringen du lager her, er hvordan du får detaljvisningskontrollen som du vil tilordne som delingskontrolleren delegerer. Split View-kontrolleren administrerer to visningskontrollere, med den siste i listen over kontroller som svarer til det som vises i detaljvisningen.
Du kontrollerer den siste visningskontrollen for å se om det er en Navigasjonskontroller (som inneholder detaljvisningskontrollen) ved å sende den isKindOfClass: meldingen. Denne metoden returnerer en boolsk indikasjon om det er en UINavigationController.
hvis ([splitViewController. ViewControllers [1] isKindOfClass: [UINavigationController class]]) {UINavigationController * detailNavigationController = [splitViewController. viewControllers lastObject]; splitViewController. delegere = (id) detaljNavigationController. topViewController;}
Hvis det er en Navigasjonskontroller, må du finne visningskontrolleren (det er den som har adoptert SplitViewControllerDelegate-protokollen, implementert protokollmetodene, og kan bli Split View-kontrollørens delegat) som du får ved får tilgang til navigasjonskontrollens toppViewController-egenskap. (Det peker på den første og eneste visningskontrollen på stakken.) Så tildeler du den som representant.
Hvis det er en visningsregulator, i stedet for en navigasjonsregulator (som det vil være fordi du bare gjorde Weather-kontrolleren detaljvisningskontrollen, og den ikke har navigasjonsregulator), tilordner du bare visningen kontrollør som delegat.
annet splitViewController. delegate = [splitViewController. viewControllers lastObject];
Hvis du bygger og driver prosjektet nå, ser det ut som om du har tatt et skritt bakover; alt du vil se er en tom skjerm - i portrettorientering ikke mindre (med mindre du har holdt teststasjonen kontrolleren som den første detaljvisningskontrollen).
