所以,我试图在用户点击'StyledStringElement'时打开一个电子邮件界面 - 为了做到这一点,我一直在调用tapped事件,但我收到了错误 -
“错误CS1502:最佳重载方法匹配 `MonoTouch.Dialog.Section.Add(MonoTouch.Dialog.Element)'有一些 无效的参数(CS1502)“
和
“错误CS1503:要键入的参数
#1' cannot convert
void'表达式 `MonoTouch.Dialog.Element'(CS1503)“
我使用的代码是 -
section.Add(new StyledStringElement("Contact Email",item.Email) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
}.Tapped += delegate {
MFMailComposeViewController email = new MFMailComposeViewController();
this.NavigationController.PresentViewController(email,true,null);
});
导致此错误的原因是什么?如何解决?
答案 0 :(得分:2)
您需要单独初始化“StyledStringElement”
例如:
var style = new StyledStringElement("Contact Email",item.Email) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
};
style.Tapped += delegate {
MFMailComposeViewController email = new MFMailComposeViewController();
this.NavigationController.PresentViewController(email,true,null);
};
section.Add(style);
答案 1 :(得分:0)
new X().SomeEvent += Handler
的返回值为void
,因此您无法在您的部分中添加该值。
不幸的是,C#正式**不支持在对象初始化器(Assigning events in object initializer)中分配事件,所以你不能这样做:
new X() {
SomeEvent += Handler,
};
如果你仍然想要同时实例化和附加,那么你最接近的就是
StyleStringElement style;
section.Add(style = new StyledStringElement("Contact Email",item.Email) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
});
style.Tapped += delegate {
MFMailComposeViewController email = new MFMailComposeViewController();
this.NavigationController.PresentViewController(email,true,null);
};
**当我正式说,这是因为我记得有些人让它在单声道c#编译器的某些分支中工作。