菜鸟教程小白 发表于 2022-12-13 09:08:59

ios - 尝试预加载谷歌地图 View


                                            <p><p>我在导航 Controller 内的 ViewController 中有一个谷歌地图 View ,该导航 Controller 位于标签栏 Controller 上。一切正常,但当我最初点击“ map ”选项卡时, map 上的加载时间为 5-10 秒。</p>

<p> <img src="/image/GoSPJ.png" alt="storyboard-layout"/> </p>

<p>我遇到过几篇 StackOverflow 帖子,其中列出了以下预加载选项卡的方法:</p>

<pre><code>for (UIViewController *viewController in self.tabBarController.viewControllers)
{
    ;
}
</code></pre>

<p>我已将其修改为我的特定实现。</p>

<pre><code>for (UIViewController *viewController in self.tabBarController.viewControllers)
{
    UINavigationController *navCon = (UINavigationController*)viewController;
    for (UIViewController *vc in navCon.viewControllers) {
      if ([isEqual: @&#34;MapViewController&#34;]){
            MapViewController *mv = (MapViewController*) vc;
            ;
      }

    }
}
</code></pre>

<p>不幸的是,这两种实现都没有预加载 map 选项卡。 </p>

<p>规范</p>

<ul>
<li>谷歌地图 SKD 1.7.2</li>
<li>iOS SDK 7.1</li>
</ul>

<p><strong>编辑</strong> MapViewController.m 上的 ViewDidLoad</p>

<pre><code>- (void)viewDidLoad
{
    ;
    mapView_ = ;
    mapView_.delegate = self;
    AppDelegate *appDelegate=(AppDelegate *).delegate;
    CLLocationCoordinate2D loc=appDelegate.locationManager.location.coordinate;

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:loc.latitude
                                                            longitude:loc.longitude
                                                               zoom:12];
    ;
    mapView_.myLocationEnabled=YES;
    mapView_.settings.myLocationButton = YES;
    self.view = mapView_;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我建议只使用容器 View (长 <a href="https://stackoverflow.com/a/23403979/294884" rel="noreferrer noopener nofollow">how-to</a> ),这很容易;然后它将可靠地独立工作。如果您愿意,只需在加载时将其移出屏幕即可(也许之后将其滑入)。</p>
<p>请注意,在容器 View 中,假设“父级”属于 Boss 类,</p>
<pre><code>@implementation SomeContaineredView
-(void)allTheDataLoaded
    {
    [(Boss*)self.parentViewController someMethodInBoss];
    }
@end
</code></pre>
<p>与父类对话就是这么简单。</p>
<hr/>
<p>注意 - 如果您需要 <strong>从父 View 到容器 View </strong>,如果您知道 Apple 让您做的“愚蠢的把戏”,这将非常容易.. <a href="https://stackoverflow.com/a/15706092/294884" rel="noreferrer noopener nofollow">https://stackoverflow.com/a/15706092/294884</a> </p>
<p>这有点古怪,对于这样一个基本的操作,你一直都做得很好。你在 prepareForSegue 中这样做:像这样......</p>
<pre><code>-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    if ()
      self.vcLogin = (LoginVC *)segue.destinationViewController;

    if ()
      self.vcStartNew = (StartNewVC *)segue.destinationViewController;

    }
</code></pre>
<p>在示例中,有两个容器 View 。 (使用标识符“containerLogin”和“containerStartNew”)所以,我有两个属性(self.vcLogin、self.vcStartNew)。这正是您设置它们的方式。</p>
<p>请注意,<strong>prepareForSegue</strong> 名称错误。它应该被称为 <strong>“当你有一个嵌入 segue 时运行的设置”</strong> 我在这里详细解释一下:<a href="https://stackoverflow.com/a/24351813/294884" rel="noreferrer noopener nofollow">https://stackoverflow.com/a/24351813/294884</a> </p>
<h1>重要! ...</h1>
<h1>这是一个方便的宏!!!</h1>
<pre><code>#define seg(A, B, C) if () \
                           B = (C *)segue.destinationViewController;
</code></pre>
<p>在我们从事的每个项目中,我们都会使用该宏。</p>
<p>那么你就可以这么写了:</p>
<pre><code>-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    seg(@&#34;cOverlayBuy&#34;, self.rockets, Rockets);
    seg(@&#34;cOverlayMainMenu&#34;, self.overlayMainMenu, OverlayMainMenu);
   
    seg(@&#34;cSearch&#34;, self.search, Search);
    seg(@&#34;cMeeting&#34;, self.meeting, Meeting);
   
    seg(@&#34;cMeetings&#34;, self.meetings, Meetings);
    seg(@&#34;cBooks&#34;, self.bikes, Bikes);
    seg(@&#34;cPeople&#34;, self.cars, Cars);
    }
</code></pre>
<p>因为,如今,每个场景都有许多容器 View ,我们拥有的每个场景,对于每个客户,在“prepareForSegue”调用中都有该代码。</p>
<p>因此,一旦该代码运行,您终于可以“访问您的容器 View !”</p>
<pre><code>;
self.cars.view.hidden=YES;
;
</code></pre>
<p>...等等。</p>
<p>就像我说的,我们在每个项目中都使用这个宏。现在几乎每个场景都有一些容器 View ,所以它在每个 VC 中!希望它可以帮助某人。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 尝试预加载谷歌地图 View ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25985186/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25985186/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 尝试预加载谷歌地图 View