MonoTouch 中的自定义 UITableViewCell

Posted

技术标签:

【中文标题】MonoTouch 中的自定义 UITableViewCell【英文标题】:Custom UITableViewCell in MonoTouch 【发布时间】:2014-02-13 06:59:41 【问题描述】:

我使用 Xamarin Studio 在 MonoTouch 项目中创建一个新的自定义表格单元格(文件 -> 新建 -> 文件... -> ios -> iPhone 表格视图单元格)。它创建了 UITableViewCell 的 MyViewCell 子类。该类已经包含一个静态 Create() 方法。

然后我在table的GetCell方法中这样使用这个类:

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)

    var cell = tableView.DequeueReusableCell(MyViewCell.Key) as MyViewCell;

    if (cell == null)
       
        cell = MyViewCell.Create();
    

    // my own code to update the cell content
    cell.Update(someData);

    return cell;

在更新方法中,我使用了一些子视图转换。问题是当第一次创建单元格(调用 Create 方法)时,没有应用转换。

但如果我将更新安排到下一次运行循环迭代,一切正常:

NSTimer.CreateScheduledTimer(TimeSpan.Zero, () =>

    cell.Update(someData);
);

这里有什么问题?我可以不使用此 hack 解决问题吗?

【问题讨论】:

【参考方案1】:

第一次没有在表格中添加单元格时,当您调用更新时

对于单元格子视图转换覆盖单元格类上的 PrepareForReuse 方法或 LayoutSubviews 方法,具体取决于您的需要。

【讨论】:

PrepareForReuse 在第一次使用时不会被调用,所以不是这样。 LayoutSubviews 似乎是解决方案,但它也不起作用 - 与创建后立即调用 update 的结果相同。

以上是关于MonoTouch 中的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

MonoTouch 中的自定义标签栏项目

monotouch 中的自定义 uitabbar,类似于语音备忘录应用程序

ios中使用monotouch的自动完成选项的自定义列表

通过 monotouch 绑定在 Interface Builder 中创建为 UIView 的自定义控件

monotouch - 可重用的 iOS 自定义视图

如何在MonoTouch中为继承的视图创建UIAppearance代理?