gpt4 book ai didi

xamarin - 创建没有 Nib 的 MvxTableViewCell

转载 作者:行者123 更新时间:2023-12-02 16:56:44 24 4
gpt4 key购买 nike

我想制作没有 nib 文件的 MvxTableViewCell,但我在 stackoverflow、github 中搜索和谷歌,我无法很好的示例来手动制作 MvxTableViewCell。

我尝试过这样的代码,

namespace KittenView.Touch
{
public partial class KittenCell : MvxTableViewCell
{
public static readonly NSString Key = new NSString ("KittenCell");

private readonly MvxImageViewLoader _imageViewLoader;
MonoTouch.UIKit.UIImageView MainImage { get; set; }
MonoTouch.UIKit.UILabel NameLabel { get; set; }
MonoTouch.UIKit.UILabel PriceLabel { get; set; }

public KittenCell () : base ()
{
this.Frame = new RectangleF(0f,0f,100f,120f);
MainImage = new UIImageView (new RectangleF(0f,0f,100f,100f));
NameLabel = new UILabel (new RectangleF (0f, 80f, 100f, 20f));
PriceLabel = new UILabel (new RectangleF (0f, 100f, 100f, 20f));
Add (MainImage);
Add (NameLabel);
Add (PriceLabel);

_imageViewLoader = new MvxImageViewLoader(() => this.MainImage);

this.DelayBind (() => {
var set = this.CreateBindingSet<KittenCell, Kitten>();
set.Bind(NameLabel).To (kitten => kitten.Name);
set.Bind(PriceLabel).To(kitten => kitten.Price);
set.Bind(_imageViewLoader).To (kitten => kitten.ImageUrl);
set.Apply ();
});

this.Transform = CGAffineTransform.MakeRotation ((float)Math.PI / 2.0f);
}

public static KittenCell Create ()
{
return new KittenCell ();
}
}
}

但是这段代码在执行阶段出现Exception,表示

SetValue:forUndefinedKey:]此调用不符合键 MainImage 的键值编码。

在 AppDelegate.cs 的 window.MakeKeyAndVisible() 处。

如何在没有 Nib 的情况下使用 MvxTableViewCell?

问候,

小黑

最佳答案

最简单的方法是使用 RegisterClassForCell 将单元格注册到 TableView ,然后使用 DequeueReusableCell 来创建或重用单元格。

为了允许 UIKit 在出队调用中使用此方法创建此类的实例,那么我认为您需要添加;

  • 类前面的 [Register("KittenCell")] 属性 - MonoTouch 使用此属性告诉 ObjectiveC 运行时有关此托管类的信息 - 它允许此实例从 ObjectiveC 创建托管类,

  • 一个构造函数,它接受一个(IntPtr handle)参数,并将该参数向下传递给base(handle)构造函数。此构造函数用于允许托管 C# 对象与底层非托管 UIKit 对象一起创建。

如果你添加这两个项目,我相信你的单元格将会被创建。此外,如果您切换到更简单的 RegisterClassForCell API,那么我认为您可以删除无参数构造函数和静态 Create 方法。

关于xamarin - 创建没有 Nib 的 MvxTableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799802/

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