我在Xamarin Studio中有这个静态源分析警告:
API使用问题:使用具有
UICompletion Handler completion
参数的* Notify方法,bool
将告诉您操作是否已完成
调用UIView.Animate(double duration, Action animation, Action completion)
时:
UIView.Animate(duration,
() => Animation(),
() => Completion());
但是,我似乎无法将参数传递给lambda表达式。这些选项都没有编译:
(bool) => Completion()
(finished) => Completion()
(bool finished) => Completion()
如何将此finished
参数传递给完成块?
答案 0 :(得分:11)
Animate
静态方法使用NSAction
方法,更多是C#样式注释,AnimateNotify
使用UICompletionHandler
方法,ObjC风格......
Animate
方法只是帮助包装AnimateNotify
:
所以而不是:
UIView.Animate(30, () => { }, () => { });
您可以使用:
UIView.AnimateNotify(30, () => { }, (bool finished) => { });
结果是一样的......
答案 1 :(得分:3)
看起来您可以使用AnimateNotify
或AnimateNotifyAsync
方法重载之一,因为它会将UICompletionHandler
与bool
一起传回:
UIView.AnimateNotify(10, () => { }, finished => { });
OR
await UIView.AnimateNotifyAsync(10, () => { }, finished => { });