Der*_*ean 2 c# xamarin.ios monotouch.dialog
我正在使用MT.D列出DialogViewController中的人员.EnableSearch已启用,您可以过滤列表中的项目.但是,如果您推送到另一个视图,然后返回,搜索栏将为空.我能够恢复通过覆盖OnSearchTextChanged (string text)并将字符串存储到本地字段所使用的搜索查询,当视图重新聚焦时,我使用以下代码:
public override ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
if (EnableSearch && !string.IsNullOrWhiteSpace (lastSearchQuery))
{
this.SearchButtonClicked (lastSearchQuery); // this inserts text
this.StartSearch (); // no clue what this is doing
this.ReloadData (); // does nothing but was worth a try
}
}
Run Code Online (Sandbox Code Playgroud)
该代码将文本插入搜索栏并显示它,但除非您输入内容,否则我无法过滤它.键盘进入视图,有一个搜索按钮,但它什么也没做.有什么建议?
我认为你所缺少的是在DialogViewController上调用PerformFilter.
我输入了一个快速示例来显示行为.我从来没有看到你观察到的确切行为.我没有必要重新填充搜索字段.作为参考,我使用的是Monotouch 5.2.11.
using System;
using System.Linq;
using MonoTouch.UIKit;
using MonoTouch.Dialog;
using MonoTouch.Foundation;
namespace delete201204242A
{
[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
UIWindow _window;
UINavigationController _nav;
MyDialogViewController _rootVC;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
_window = new UIWindow (UIScreen.MainScreen.Bounds);
RootElement _rootElement = new RootElement ("LINQ root element") {
new Section ("List") {
from x in new Expense [] { new Expense () {Name="one"}, new Expense () {Name="two"}, new Expense () {Name="three"} }
select (Element)new BindingContext (null, x, x.Name).Root
}
};
_rootVC = new MyDialogViewController (_rootElement);
_rootVC.EnableSearch = true;
_nav = new UINavigationController (_rootVC);
_window.RootViewController = _nav;
_window.MakeKeyAndVisible ();
return true;
}
public class MyDialogViewController : DialogViewController
{
public MyDialogViewController (RootElement root) : base (root) {}
public string SearchString { get; set; }
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
if (!string.IsNullOrEmpty (SearchString))
this.PerformFilter (SearchString);
}
public override void OnSearchTextChanged (string text)
{
base.OnSearchTextChanged (text);
SearchString = text;
}
}
public class Expense
{
[Section("Expense Entry")]
[Entry("Enter expense name")]
public string Name;
[Section("Expense Details")]
[Caption("Description")]
[Entry]
public string Details;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |