gpt4 book ai didi

c# - 如何在 Xamarin 中检索用户定义的运行时属性?

转载 作者:行者123 更新时间:2023-11-29 10:21:09 25 4
gpt4 key购买 nike

在我的 XCode Storyboard上,我有一个自定义 ImageView (称为 CustomImageButton)。有一个关于用户定义的运行时属性的部分:

User Defined Runtime Attributes

我看过几个关于如何在 Objective-C 中检索这些值的示例,但不知道如何转换为 Xamarin C#。我使用的代码是:

class CustomImageButton : UIImageView
{
public CustomImageButton(IntPtr handle) : base(handle)
{
NSObject objType = ValueForKey(new NSString("bgType"));
if (objType == null)
// Do something here
}

public override NSObject ValueForUndefinedKey(NSString key)
{
return null;
}
}

但是,它总是进入未定义的关键部分并返回null。如何检索键“bgType”的字符串“Transparent”?

最佳答案

在您的自定义(基于 C# 的)UI 类中,为您的自定义 用户定义的运行时属性添加一个属性。

[Connect]
private NSString Stack {
get {
return (NSString)GetNativeField ("Stack");
}
set {
SetNativeField ("Stack", value);
}
}

这将依次在您的 ObjC 自定义类头文件中自动生成属性:

@property (nonatomic, retain) IBOutlet NSString *Stack;

定义你的属性值:

enter image description here

当加载 xib 或 Storyboard时,此属性为自定义属性提供了一个存储位置以供将来引用。

现在您可以通过 ValueForKey 访问此值:

partial void OnBottonUpInside (CustomButton sender) {
NSString value = (NSString)sender.ValueForKey(new NSString("Stack"));
Console.WriteLine(value);
}

输出示例:

2016-02-03 08:27:51.666 keyvalue[46492:2538387] OverFlow

当然,我可以将属性定义为公共(public)属性并以这种方式访问​​它:

partial void OnBottonUpInside (CustomButton sender)
{
Console.WriteLine (sender.Stack);
}

注意:通常在 ObjC 中,您只需将其定义为强属性,但 Xamarin 不会那样定义它,但结果是“相同的”:

@property (strong) NSString *Stack;

关于c# - 如何在 Xamarin 中检索用户定义的运行时属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com