Hast Du dem Simulator beim Debuggen genau zugesehen?
Ich weiß, das klingt jetzt von oben herunter: Am besten kapiert man, wenn man selbst den Fehler gefunden hat. Besonders dann, wenn man den Code irgendwo abgeschrieben hat.
Deswegen: Versuche mal selbst herauszufinden, was so im einzelnen passiert und ob das Sinn macht. Falls Du es selbst dann immer noch nicht herausfindest, dann teste zum Vergleich mal diese Version:
Lesezeichen