2014-09-18 23 views
6

Voglio tradurre questo codiceCome appare il gestore di completamento in C# quando si tenta di animare?

[UIView animateWithDuration:0.25 
    animations:^{ 
     self.datePicker.alpha = 0.0f; 
    } 
    completion:^(BOOL finished){ 
     self.datePicker.hidden = YES; 
    } 
]; 

a Xamarin iOS:

UIView.Animate (0.25, 
    animation:() => { 
     this.datePicker.Alpha = 0.0f; 
    }, 
    completion: (finished){ 
     this.datePicker.Hidden = true; 
    } 
); 

Il problema è nel blocco completion. Come si usa la bool finished qui?

ottengo

imprevisto Simbolo {

risposta

8

E 'piuttosto semplice lambda expression.

UIView.Animate (0.25, 
    animation:() => { 
     this.datePicker.Alpha = 0.0f; 
    }, 
    completion:() => { 
     this.datePicker.Hidden = true; 
    } 
); 

O poiché avete una sola istruzione nel vostro corpo, si può tagliare verso il basso ancora di più per

UIView.Animate (0.25, 
    animation:() => this.datePicker.Alpha = 0.0f, 
    completion:() => this.datePicker.Hidden = true 
); 
+0

Delegato 'Monotouch.Foundation.NSAction' non accetta gli argomenti '1' – testing

+0

Vedere la modifica. Non so perché l'API Xamarin.iOS sia diversa dalle firme Cocoa, ho pensato che fossero pensate per essere copie esatte, una specie di. –

+0

Se ho capito bene: nel codice originale 'Objective C' c'è un bool che è impostato su true se è finito. In 'Xamarin' non ho bisogno di una variabile del genere perché viene chiamata automaticamente? – testing

2

Usa UIView.AnimateNotify() per ottenere il delegato per il gestore di completamento che utilizza il parametro bool.