菜鸟教程小白 发表于 2022-12-12 18:48:59

c# - MonoTouch - 异步 UISearchBar


                                            <p><p>我有一个异步 UISearchBar 设置如下:</p>

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

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

<p>如果我完成搜索或取消它,然后再试一次,对 ReloadData() 的调用会导致以下崩溃:</p>

<pre><code>2012-01-04 23:05:11.589 myApp -: unrecognized selector sent to instance 0xb0ea840
Stacktrace:

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

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

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

<p>否则,如果我做错了,请告诉我。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这不是绑定(bind)错误(我检查了它们以确定)。数据源应设置在 <code>UISearchDisplayController</code> 上,而不是 table view 上(例如 <code>SearchDisplayController.SearchResultsTableView</code>)。</p>

<p>IOW 替换:</p>

<pre><code>      SearchDisplayController.SearchResultsTableView.Source = _tableSource;
</code></pre>

<p>与:</p>

<pre><code>      SearchDisplayController.SearchResultsSource = _tableSource;
</code></pre>

<p>这将确保 <code>UISearchDisplayController</code> 的内部状态在使用之间正确更新。</p></p>
                                   
                                                <p style="font-size: 20px;">关于c# - MonoTouch - 异步 UISearchBar,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8738013/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8738013/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: c# - MonoTouch - 异步 UISearchBar