Opdatering i tabellen

Relaterede dokumenter
Aftenskole i programmering sæson Flere registreringer. Sæson 2 - Lektion 8

Aftenskole i programmering sæson Watch Me. Sæson 2 - Lektion 19

Aftenskole i programmering sæson Core Data del 2. Sæson 2-13

Aftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5

DMX styring med USB-interface

TIDSREGISTRERING VERSION 2.0. R2PTRACKING APS Nørregade 13, 4100 Ringsted

Elevadministrations modulet. Brugervejledning Optagelse.dk

DOKUMENTATION OG VEJLEDNING

Vejledning til elevadministration. Vejledning til brug af Optagelse.dk som elevadministrativt system

8.0 Distriktshjemmesider

LinkGRC. Kontrol. Brugermanual

Vejledning. Excel-skabelon. til oprettelse af kalendere. Oversigtskalender_Skabelon_Revideret 05_06.xls

Lav din egen forside i webtrees

Ny forbedret version

ViKoSys. Virksomheds Kontakt System

Vejledning. Excel-skabelon. til oprettelse af kalendere. Oversigtskalender_Skabelon_Revideret 05_01.xls

Alle tekstbokser er generelle informationer og ikke en del af selve step by step guiden.

Formular modul. Sitecore Foundry juli Version 1.0

Opsætning af 60 dags regel

Vejledning til Blackboards portfolio værktøj

Log ind. Opret fortælling. Skriv tekst. Upload billeder. Indsæt billeder. Indsæt links. Indsæt citat. Indsæt grå boks

Programmering for begyndere Lektion 2. Opsamling mm

Vejledning til HB Bus App til godkendelse af kørselstider

Velkommen. I gang med Ondisplay

1. Du bliver mødt af denne boks. Klik på Gem, og gem filen et sted hvor du kan finde den igen.

Rapport generator til Microsoft C5

Gennemgang af ios app

TID registrering generelt

Vejledning til læreren. MG/FG - Skoleportalen

Vejledning til HB Bus App til godkendelse af kørselstider

LinkGRC. Dokumenter. Brugermanual

Hvilke maskiner kan komme med på nettet.

TK/TBL / v.0.1. DigiMatch. Elektronisk Kamprapport

Statistikmodul i WinPLC

Vejledning. Excel-skabelon. til oprettelse af kalendere. Oversigtskalender_Skabelon_Revideret 04.xls

Special Ops Live. Dansk Quick Guide. Kamera indstillinger ved Foto mode. Nu kan du styre dit kamera live via sms

Hvis du ikke kan huske adgangskoden, har andre problemer med at logge på eller ikke er oprettet, skal du kontakte:

Formular modul. Sitecore Foundry januar Version 1.0

Vejledning Lønindberetning. Opdateret 14. februar 2012

Dannelse af PDF dokumenter

The Boerboel Pedigree

Dannelse af PDF-dokumenter

Online-timeseddelregistrering

BRUGERMANUAL FLEXSCREEN

UNI-labels i Open- og LibreOffice

Indholdsfortegnelse. Indholdsfortegnelse.. side 2. Adgang til webgraf 3. Opslag adresse Styring af layout.. 5. Zoom funktioner..

Spots og komponenter. Sitecore Foundry februar Version 1.0

Brugervejledning til Kørebog for Pocket PC

Projekter. Startvejledning

Indhold Windows Phone

ON!Track Mobil brugermanual

Vejledning i brugen af regneark til TOP-CUP, Vest

Sådan bruges kontaktpersongrupper (private distributionslister)

Call Recorder Apresa Brugermanual

1-1 Usability evaluering af den simple udgave

Indhold. Nyheder og vejledninger. 2. maj 2016 Manuel tilpasning af investeringsbevisnote

Document Capture for Microsoft Dynamics NAV. Ændringslog og opgraderingsnoter version 3.01

Vejledning og beskrivelse til kørselsappen Min Kørsel

SMARTair trådløs. Trin-for-trin guide

portal.microsoftonline.com

Tacho Online: Vognkort

Svendeprøve Projekt Tyveri alarm

KOMPONENT BESKRIVELSE

#AlleKanKode. Lektion 3 - Operatorer

Kvik guide Mitel MC Klient iphone

WorldTrack Elektronisk Kørebog QUICKGUIDE (AUGUST 2018)

Google Apps. Lær at oprette, organisere, dele og slette dokumenter. Udarbejdet af PLC, version 2013!!!!!!! Side 1 af 9

Kom i gang med... Kapitel 12 Arbejde med skabeloner. OpenOffice.org

LegalOffice BRANCHEINDSIGT I SYSTEM CAPTO.DK

Håndtering af timepriser. Lær om timepriser, prisgrupper og prislister Solvejg la Cour Andersen

JAR Øvelse nr. 7. JAR-Manual, Version 1.0. Matrikler i JAR. Regionsvejledning

My booking. Generelt. Forsiden. Version 9.0

Sådan kommer du i gang med boldnettet

DOKUMENTATION OG VEJLEDNING

Netkatalog upload. Forord: Formål:

Sådan laver du en animationsfilm

Guide til oprettelse/redigering af events på bornholm.info

Brugerinterfacet er blevet delt op i vinduer så der senere kan tilføjes mulighed for åbne flere lister samtidig, i en fremtidig version.

Fremtidige ønsker til DANSDASTV

Manual Version 2. til oprettelse af hjemmesider for landsbyer i Rebild kommune

Introduktion. Formål Manualen giver omfattende retningslinjer og trin for trin instruktioner til at arbejde med appen

Vejledning PROPHIX 11. Brug af cellekommentarer i Prophix. Systemansvarlige Daniel Nygaard Ricken Økonomiafdelingen

Vejledning i allergiskema

DANSK SKOLEDATA APS. Tlf DSA-Ventelisten

Nota App på telefonen

Daglig brug af Jit-klient

PID2000 Archive Service

Indhold Opstart af Walk 200b Opretning af ny patient Opstart af test Importering af Data: Ikoner...

DDElibra H Å N D B O G

Breve Fraser Makroer m.m.

DataFraGraf menuen 17.1

Tilpasning af din tastaturgenveje

Oktober Dokumentpakker

CapLegal Quick Guide - Sagsbehandling

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Advanced Word Template Brugermanual

Her kan man oprette et nyt slideshow ved at trykke på kassen med "Opret nyt slideshow". Dette fører en til "Rediger slideshow".

Manual til Kundekartotek

Indholdsoversigt. Emne. Side

Transkript:

Opdatering i tabellen Sæson 2 - Lektion 10

Sidste uge Sidste uge gennemgik jeg hvordan jeg kunne løse opgaven om at tiden i vores model skulle initieres til 0:00, og hvordan i kan huske at eksperimentere med koden i en playground til i finder de vise sten I lærte at designe en custom celle så vi kunne vise vores data fra vores tidsregistreringer på listeform (tabelview) I lærte om BAR (bjælker hvor man kan putte knapper og ikoner på) I lærte om at tilføje en UIButtonBarItem til vores navigation så vi kan få et + ikon i toppen af vores navigation BAR til oprettelse af en ny registrering I lærte at tilføje knappen i visual builder, eller i kode Og det betød at vi opdagede nogle ting der skal rettes i vores tidsregistreringsmodel, så det fik i som opgave til i dag.

Agenda for i aften Jeg viser jer hvordan i kunne løse opgaverne, hvilke tanker der går bag løsningerne. Jeg kan godt forstå hvis i har haft svært ved opgave 9.2 Så ser vi hvad der skal til for at vi kan rette en registrering Og hvordan vi kan slette en registrering i vores tabel view. Det kan være vi går lidt under i aften. (Ved jeg har sagt det før, nu får vi at se)

Husk at række hånden op 1. Skriv dit spørgsmål. 2. Ræk hånden op 3. Jeg holder flere spørge pauser undervejs

Opgave 9.1 Vi fandt ud af, efter vi kunne oprette flere tidsregistreringer, at beskrivelsen ikke blev gemt. Det tyder på at vi ikke får opdateret modellen med data fra vores outlet når vi er færdige med at taste beskrivelsen. Der er 2 ting i det, for vi ønsker ikke at man skal slette DESCRIPTION når man taster, og samtidig skal vi gemme vores data i vores model. Det ser vi på i xcode.

Hvad så vi i xcode omkring opg 9.1 Det med at vi skulle slette DESCRIPTION kunne rettes simpelt i Interface Builder ved at vi skiftede fra at feltet havde værdien til at vi brugte en Placeholder. Vores TimeEntryViewController, var lidt rodet så jeg fik ryddet op i den og placerede outlets, actions mm i grupper med //MARK: så det var nemmere at finde koden i oversigten. Jeg lavede en funktion som opdaterede alle tekst felter i modellen Jeg fandt alle de steder hvor tastaturet blev skjult, og sikrede mig at den kaldte updatetextfieldsinmodel funktionen som jeg lige havde lavet..

Spørgsmål til opgave 9.1 Aftenskole i programmering

Opgave 9.2 Vi fandt ud af at hvis vi trykkede start så vi start tiden i appen. Tiden skal vise 0:00 indtil den enten er indtastet eller vi har trykket stop, så vi har målt tiden. Den tid der skal vises skal være den MÅLTE eller tastede tid, og det er det ikke nu, og problemet ligger tydeligvis i Modellen for det er den der er ansvarlig for forretningslogikken altså reglerne for hvad der må og skal vises.

Problemet er at Tid = En dato Da vi valgte at lave valg af tid, fandt vi ud af at det var nemmere at bruge en Date end at arbejde med tiden alene fordi Date funktionerne bruger typen Date Men vi har designet vores model efter at kunne spørge på tiden (TimeInterval), så det skal vi have designet om. Vi er kommet til at bruge entrydate, men det er jo start dato/tid og den bør vi ikke ændre når vi ændre tiden.

Problemerne listet op entrydate må kun ændres når vi opretter instansen, og når vi ændrer datoen. time, bruger vi til at returnere tiden som sekunder, men vi sætter den aldrig ud fra sekunder. Vi sætter tiden ud fra en Date, fordi det er det UIDatePicker bruger. Der er ikke noget galt med modellen som sådan, men vi bruger den forkert, i viewcontrolleren fordi vi har haft brug for at få en Dato til vores UIDatePickerView Vi har i modellen taget hensyn til at man kan gå over flere dage i en registrering, dvs vi starter en given dato og arbejder 28 timer eksempel. 28 timer kan vi ikke indtaste i en UIDatePicker med mode =.time

Hvordan kan vi løse det? Vi skal stoppe vores viewcontroller fra at ændre entrydate når vi ændre tiden. Vi kan beslutte at vi maks tillader at registrere 24 timer (23:59) og hvis vi går over må vi lave en registrering manuelt mere eks. Version 2 kan så måske ændres til at håndtere automatisk registrering over flere dage. Hvis vi tager forudsætningen at vi ikke kan registrere over et døgn i samme registrering, kan vi udvide modellen med en logedtimeasdate property Det laver vi i xcode.

Hvad så vi i xcode om opgave 9.2 Jeg lavede en egenskab på modellen der kunne returnere og sætte tiden som en Date, for det skal vi bruge i vores UIDatePicker s Jeg ændrede delegate protokollen, så vi også havde funktioner for dato og tid. Jeg implementerede delegate protokol metoderne på TimeEntryViewController Jeg ændrede DateEditViewController til at kalde de forskellige delegate metoder afhængig af parameter typen. Herunder viewdidload så dato og tid bliver initialiseret. Jeg ændrede metoden updateui på TimeEntryViewController, til at bruge LogTimeAsDate Jeg ændrede metoden updateui på TimeEntryViewController, til at udfylde description fra modellen også. Og det samme ændrede jeg i vores custom cell, for ellers kommer det ikke tilbage til vores visning. Dermed viste det sig også at de andre værdier i modellen som status mm også blev sat

Kan i huske den her. Software udvikling er en process hvor vi hele tiden bliver klogere og retter og laver det om. Se den fulde video på youtube

Er der plads til forbedringer Det korte svar er JA. Modellen var ok, men for at viewcontrolleren måtte fungere måtte vi tage den beslutning at vi for nu ikke kan håndtere arbejdsdage over 24 timer. Der bør kigges på at man indtaster timer som 0-99 eks og minutter i eks 15,30,45,60 minutters intervaller. Hvis timer > 24 så skal der automatisk laves en ekstra registrering med samme oplysninger men over 2 dage. eks. Skal man det eller skal man holde fast i begrænsningen om maks 24 timer? Forbedringer i UI, Autolayout, mere polish, osv osv osv.

Spørgsmål til opgaven? Aftenskole i programmering

Rette en tidsregistrering Det kan laves på mange måder, men siden vi allerede har en viewcontroller hvor vi retter en registrering er et oplagt at bruge den. Når vi dapper på en celle skal vi kunne rette registreringen, ved at vi skifter til vores redigerings view. Det skal vi se på i xcode

Hvad så vi i xcode Jeg lavede en segue fra prototype cellen til TimeEntry tidsregistrering viewet. Jeg rettede prepare for segue på TimeLogTableViewController Først testede vi på segue navnet Så tog vi fat i sender (som jo må være cellen) og forsøgte at typecaste den til en TimeLogEntryViewCell Så spurgte vi TabelViewet om at give os indexpath for den celle vi havde fat i Til sidst slog vi op i vores Model på indexpath.row værdien for at få fat i vores tidsregistrering som vi så gav vores destinationvc som parameter.

Spørgsmål til opdatering af en tidsregistrering

Sletning af en registrering Det er blevet normalt at man slider en celle til venstre når man vil slette At slette har noget med data at gøre og en UITableViewController har 2 protokoller UITableViewDelegate og UITableViewDataSource Insert update og delete knytter sig til data sourcen, derfor kan det være gavnligt at se på hvad der står i online dokumentationen, så det gør vi og søger på UITableViewDataSource.

Fra dokumentationen Der er en metode der sletter med et swipe på UITableViewDataSource, som kan vise en slet knap. Men først skal vi have implementeret en sletning i vores model, så når jeg kommer med en indexpath.row kan jeg slette posten under. Det ser vi på i xcode.

Hvad så vi xcode Jeg lavede 2 funktioner på vores TimeLog candeleterow(atindex: int) deleterow(atindex: int) På den måde kan jeg teste om jeg kan slette et index, før jeg sletter (det burde ikke være et problem) Og det ser vi på nu i xcode..

Hvad så vi i xcode Vi så at vores skabelon allerede havde en slet funktion indbygget. Vi skulle bare udkommentere funktionen og implementere sletning i modellen på det index vi kommer med. Der er også funktioner til redigering af rækkefølge mm. Men det er creme og det kan altid ændres.

Status Vi kan oprette en tidsregistrering. (Insert) Vi kan rette en tidsregistrering. (Update) Vi kan slette en tidsregistrering. (Delete) Vi mangler at kunne gemme data Vi mangler at kunne lave et uge View for en given uge, men det kræver at vi kan søge i gemt data (lave et opslag i en database)

Spørgsmål til sletning? Aftenskole i programmering

Vi har set på: Modeller, Date, DateFormatter, DateComponents, Calendar, ViewControllere, Delegates, Protocols, Segues, DatePickers, NavigationBar, NavigationController, TabelController, TableCell, BarButton osv osv. Alt sammen komponenter vi har bygget på for at kunne registrere en eller flere tider. Vi skal have set på hvordan vi kan gemme data og det starter vi på i næste uge.

Til næste uge Prøv at programmere det jeg har vist jer. Har i ikke kunnet løse opgaverne så prøv at løse det med det i har set i aften.

I næste uge Det handler kun om at kunne gemme data. Der kommer en del teori i næste uge, som er nødvendigt for at forstå nogle grundprincipper omkring at gemme data.

Spørgsmål på falderebet? Aftenskole i programmering

Vi ses i næste uge. Aftenskole i programmering