Vâng, mọi người đều biết rằng trong ObjC chúng tôi cóLàm thế nào để chuyển đối số cho NSAction?
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
ý rằng completion
khối có một cuộc tranh luận BOOL. Bây giờ chúng ta hãy nhìn vào MonoTouch:
public static void Animate (double duration, double delay, UIViewAnimationOptions options, NSAction animation, NSAction completion)
NSAction là:
public delegate void NSAction();
Chỉ cần các đại biểu mà không cần bất kỳ đối số. Hơn nữa, trong Monotouch "internals", chúng ta có thể thấy:
public static void Animate (double duration, double delay, UIViewAnimationOptions options,
NSAction animation, NSAction completion)
{
UIView.AnimateNotify (duration, delay, options, animation, delegate (bool x)
{
if (completion != null)
{
completion();
}
});
}
Thông báo delegate (bool x)
, Nó gọi hàm giống như tôi cần. Bây giờ, làm cách nào tôi có thể vượt qua Action<bool>
khi hoàn tất thành UIView.Animate
?
Đừng có nghĩ đó là thời gian để loại bỏ wrapper cũ? –
@Maxim: Tôi tưởng tượng nó sẽ là quá mức cần thiết để loại bỏ nó qua đêm. Nhưng lỗi thời nó nghe như một ý tưởng hay đối với tôi. (Tôi không phải là nhà phát triển MT, chỉ là một người dùng.) –