• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c# - MonoTouch - 异步 UISearchBar

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:48:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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

如果我完成搜索或取消它,然后再试一次,对 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>

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

这很可能是 MonoTouch 中的错误吗?如果有可能,我可以创建一个重现。

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



Best Answer-推荐答案


这不是绑定(bind)错误(我检查了它们以确定)。数据源应设置在 UISearchDisplayController 上,而不是 table view 上(例如 SearchDisplayController.SearchResultsTableView)。

IOW 替换:

        SearchDisplayController.SearchResultsTableView.Source = _tableSource;

与:

        SearchDisplayController.SearchResultsSource = _tableSource;

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap