单击Xamarin

单击Xamarin,xamarin,xamarin.ios,Xamarin,Xamarin.ios,我正在尝试在Xamarin.iOS应用程序中注册单击事件。但我不想在这样的方法中注册事件 我想从故事板上注册它们,似乎有这样做的功能 在我的ViewController中,我有以下代码: public void ButtonPressed(object sender, EventArgs ea) { UIAlertView error = new UIAlertView("Test Title", "This is a test", null, "Ok", n

我正在尝试在Xamarin.iOS应用程序中注册单击事件。但我不想在这样的方法中注册事件

我想从故事板上注册它们,似乎有这样做的功能

在我的ViewController中,我有以下代码:

    public void ButtonPressed(object sender, EventArgs ea)
    {
        UIAlertView error = new UIAlertView("Test Title", "This is a test", null, "Ok", null);
        error.Show();
    }
当我运行应用程序并按下按钮时,appDelegate中出现错误

Foundation.MonoTouchException:引发Objective-C异常。姓名: NSInvalidArgumentException原因:-[HomeViewController 按钮按下::无法识别的选择器发送到实例0x14691650


如何注册单击事件?

检查您的ViewController的设计器文件,它将有如下内容:

using Foundation;
using System;
using System.CodeDom.Compiler;
using UIKit;

namespace TEST
{
    [Register ("ViewController")]
    partial class ViewController
    {
        [Action ("ButtonPressed:")]
        [GeneratedCode ("iOS Designer", "1.0")]
        partial void ButtonPressed (UIButton sender);

        void ReleaseDesignerOutlets ()
        {
        }
    }
}
[Action ("ButtonPressed:")]
[GeneratedCode ("iOS Designer", "1.0")]
partial void ButtonPressed (UIButton sender);
因此,只需像这样实现该方法:

using System;
using UIKit;

namespace TEST
{
    public partial class ViewController : UIViewController
    {
        public ViewController (IntPtr handle) : base (handle)
        {
        }

        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
        }

        partial void ButtonPressed (UIButton sender)
        {
            Console.Write ("HEY mark this answer as accepted");
        }
    }
}

检查ViewController的分部类。它应该是这样的:

using Foundation;
using System;
using System.CodeDom.Compiler;
using UIKit;

namespace TEST
{
    [Register ("ViewController")]
    partial class ViewController
    {
        [Action ("ButtonPressed:")]
        [GeneratedCode ("iOS Designer", "1.0")]
        partial void ButtonPressed (UIButton sender);

        void ReleaseDesignerOutlets ()
        {
        }
    }
}
[Action ("ButtonPressed:")]
[GeneratedCode ("iOS Designer", "1.0")]
partial void ButtonPressed (UIButton sender);
然后将
partial
添加到您的方法中:

public partial void ButtonPressed(object sender, EventArgs ea) {
    //...
}

谢谢,当我明天回去工作的时候,我会试试这个。太好了。唯一缺少的是,由于某种原因,我的designer控制器没有包含在项目文件中。一旦我把它添加到我的项目中,它就编译好了,工作得很好。