菜鸟教程小白 发表于 2022-12-12 23:10:31

ios - 尝试管理大型 UITableView 数据结构


                                            <p><p>我有一个 <code>UINavigationController</code> 从 Web 服务获取项目。我调用 Web 服务 - 它检查是否有更多项目要加载 - 如果有 - 我使用来自 Web 服务的新数据加载相同 <code>viewController</code> 的新实例。这很好用。 </p>

<p>我还要做的是显示一个“正在加载”屏幕,它再次显示同一 ViewController 的另一个实例,其中只有一个 <code>UITableViewCell</code> 表示正在加载。这提供了良好的体验,并且在 Web 服务繁忙时不会锁定 UI。 </p>

<p>当没有更多要显示的项目时(只有在 Web 服务返回后才能知道这一点)我将一个新的 ViewController 推送到堆栈上 - 我们称之为 <code>viewControllerB</code>。 </p>

<p>所以它是这样工作的:</p>

<p><strong>当我们从 Web 服务返回更多项目时:</strong> </p>

<p><code>UITableViewCell</code> 已点击 -> <code>Web 服务调用</code> 开始 -> 当前 <code>viewControllerA</code> 的新实例使用“Loading cell”插入堆栈 -> 来自 WebService 的 <code>more items</code> - 用更多数据重新加载 <code>viewController</code> 的当前实例。 </p>

<p><strong>当我们没有从 Web 服务取回项目时:</strong> </p>

<p><code>UITableViewCell</code> 已点击 -> <code>Web 服务调用</code> 开始 -> 当前 <code>viewControllerA</code> 的新实例使用“Loading cell”插入堆栈 -> <code>no more items</code> 从 WebService -push 到 <code>viewControllerB</code></p>

<p>现在的问题是,当我从 <code>viewControllerB</code> 返回到 <code>viewControlerA</code> 时,我得到了“正在加载更多”屏幕,并且必须再返回一个级别到最后一组结果是 <code>viewControllerA</code></p>

<p>如何绕过加载屏幕并直接转到最后的结果? </p>

<p>最后,是否有另一种方法可以在不将同一 ViewController 的新实例加载到堆栈中的情况下做到这一点?同时保留上一个屏幕的数据? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以对服务器使用异步请求,该操作将在另一个线程中进行,因此您的应用程序不会卡住主线程。这是一个简单的例子:</p>

<pre><code>-(void) myFuncToServerRequest{

    ;

    NSMutableString *post = ;
    ;

    NSData *postData = ;
    NSString *postLength = ];
    NSMutableURLRequest *request = [ init];

    NSString *urlApi = @&#34;yoursite.com&#34;;

    ;
    ;
    ;
    ;

    NSOperationQueue *queue = [ init];
    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
      ;
      if (error){

      }
      else{
      // return to main thread
      dispatch_async(dispatch_get_main_queue(), ^{
                   // Do what you want with your data
                });


      }
    }];
}
</code></pre>

<p>我的键和我的值是请求的参数,您可以在 post 变量中附加更多的键和值字符串。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 尝试管理大型 UITableView 数据结构,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24304137/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24304137/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 尝试管理大型 UITableView 数据结构