我想知道Xamarin Studio是否有可能将myview.designer.cs
中自动生成的插座的类型设置为.xib
内控件的子掌。
例如,我已经将NSButton
子类化为整个应用中的按钮创建了一些自定义UI。
我使用Register
属性将我的类定义为类似的东西,因此它对Objective-C运行时可见:
[Register("AppButton")]
public class AppButton : NSButton
{
...
}
在XCode中,我已在我的AppButton
上将自定义类设置为NSButton
。如果我在文本编辑器中打开.xib
,我可以在我的按钮上看到customClass
属性:
<button id="bxh-qr-g81" ... customClass="AppButton">
但是当Xamarin Studio听取了更改并更新了设计器文件时,我似乎总是使用NSButton
而不是AppButton
来获得插座。
[Register ("MyView")]
partial class MyView
{
[Outlet]
AppKit.NSButton MyButton { get; set; }
...
}
我希望它是我的自定义类的类型:
[Register ("MyView")]
partial class MyView
{
[Outlet]
AppButton MyButton { get; set; }
...
}
这个的主要原因是我想在AwakeFromNib
内设置一些属性,每次施放它都有点乏味。如果类型发生更改而不是运行时错误,编译器抛出错误也会很好,假设我没有检查它是否真的是AppButton
的类型。
如果我可以在XCode中直接在我的子类上设置属性,那么这不是问题。但据我所知,IBInspectable
or IBDesignable
doesn't seem to be supported by Xamarin。
答案 0 :(得分:0)
我让这个工作:
CustomButton.h
和CustomButton.m
文件再次创建出口。应该是这样的:
[Outlet]
AppName.iOS.CustomButton customButton { get; set; }
我认为你的意思是UIButton
而不是NSButton
using System;
using UIKit;
using Foundation;
namespace EdFringe.iOS
{
[Register ("CustomButton")]
public class CustomButton : UIButton
{
public CustomButton ()
{
}
public CustomButton (IntPtr p) : base(p)
{
//this one i think is used to create the obj-c object.
}
public CustomButton (NSCoder coder) : base(coder)
{
// This one i think is used when creating the xib.
}
//Custom stuff here
}
}