1

そのため、ユーザーが「StyledStringElement」をクリックしたときに電子メール インターフェイスを開こうとしています - これを行うために、タップされたイベントを呼び出していますが、エラーが発生しました -

「エラー CS1502: `MonoTouch.Dialog.Section.Add(MonoTouch.Dialog.Element)' に最適なオーバーロードされたメソッドの一致には、無効な引数があります (CS1502)」

「エラー CS1503: #1' cannot convert`MonoTouch.Dialog.Element' を入力する引数 void' 式 (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);
    });

このエラーの原因と修正方法を教えてください。

4

2 に答える 2

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);
于 2013-05-02T12:54:09.193 に答える
0

の戻り値new X().SomeEvent += Handlervoidであるため、セクションに追加することはできません。

残念ながら、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);
};

** 公式に言うと、mono c# コンパイラのいくつかのブランチで動作するようになった人がいたことを覚えているからです。

于 2013-05-02T13:30:36.723 に答える