我有以下代码示例来演示使用MessageElement单元格的简单MonoTouch.Dialog表。我遇到的问题是在DialogViewController中启用自动搜索功能时。每当进行搜索时,它始终只会显示一个空白表。

如果我仅将MessageElement单元格替换为StingElements单元格,则搜索效果会很好。

是否需要一些其他代码才能正确搜索MessageElement单元格?

任何与此问题的帮助将不胜感激。

using System;
using MonoTouch.UIKit;
using MonoTouch.Dialog;
using MonoTouch.Foundation;

namespace MessageElementSearch
{
    public class MessageTable : DialogViewController
    {
        public MessageTable(RootElement root) : base(root)
        {
            Section sec = new Section();

            root.Add(sec);

            for (int i = 0; i < 10; i++)
            {
                MessageElement me = new MessageElement();

                me.Sender = "Sender " + i.ToString();
                me.Subject = "Subject " + i.ToString();
                me.Body = "Body " + i.ToString();
                me.Date = DateTime.Now;

                sec.Add(me);
            }

            this.Style = UITableViewStyle.Plain;
            this.EnableSearch = true;
            this.SearchPlaceholder = "Filter Table...";
        }
    }
}

最佳答案

可以在github上找到MonoTouch.Dialog的源代码。从中可以看到DialogViewController does it's search(它在Matches上调用Element方法)的方式,以及如何根据自己的喜好对其进行调整。

在您的情况下,碰巧MessageElement类型不会覆盖Matches,因此会回退到默认值,即使用Element do to it's searchingCaption

快速修复它可以从MessageElement继承您自己的元素,例如MyMessageElement,并覆盖Matches以根据需要工作。

关于c# - MonoTouch.Dialog搜索过滤器不适用于MessageElement单元,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9611656/

10-11 14:51