gpt4 book ai didi

c# - MonoTouch - 异步 UISearchBar

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:50:58 27 4
gpt4 key购买 nike

我有一个异步 UISearchBar 设置如下:

  • 继承 UISearchDisplayDelegate 并将其设置为 myController.SearchDisplayController.Delegate
  • 重写 ShouldReloadForSearchString -> 启动一个新线程调用网络服务并返回 false 以不重新加载 UITableView
  • Web 服务在后台完成 -> 调用 BeginInvokeOnMainThread()
  • 通过 myController.SearchDisplayController.SearchResultsTableView.ReloadData() 重新加载表格 View

我进行的第一次搜索一切正常,我可以退格或键入并查看异步弹出的新结果。

如果我完成搜索或取消搜索,然后重试,对 ReloadData() 的调用会导致以下崩溃:

2012-01-04 23:05:11.589 myApp[98047:2407] -[MainController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xb0ea840
Stacktrace:

at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff>
at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29
at MyApp.Application.Main (string[]) [0x00000] in /Users/jonathanpeppers/Projects/MyApp/Main.cs:13
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

我不处理任何东西,并且将我的所有委托(delegate)保留在成员变量中以防止 GC 问题。每个后台线程似乎也在正确调用 BeginInvokeOnMainThread()

这很可能是 MonoTouch 中的错误吗?如果可能的话,我可以创建一个复制品。

否则,如果我做错了,请告诉我。

最佳答案

这不是一个绑定(bind)错误(我检查过它们以确保)。数据源应该在 UISearchDisplayController 上设置,而不是在 TableView 上(例如 SearchDisplayController.SearchResultsTableView)。

IOW 替换:

        SearchDisplayController.SearchResultsTableView.Source = _tableSource;

与:

        SearchDisplayController.SearchResultsSource = _tableSource;

这将确保 UISearchDisplayController 的内部状态在使用之间正确更新。

关于c# - MonoTouch - 异步 UISearchBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738013/

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