单击Xamarin
我正在尝试在Xamarin.iOS应用程序中注册单击事件。但我不想在这样的方法中注册事件 我想从故事板上注册它们,似乎有这样做的功能 在我的ViewController中,我有以下代码:单击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
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控制器没有包含在项目文件中。一旦我把它添加到我的项目中,它就编译好了,工作得很好。