菜鸟教程小白 发表于 2022-12-12 21:44:37

iphone - Storyboard - initWithCoder 被调用两次


                                            <p><p>我想知道的重要一点是我正在使用 Storyboard。我在 <strong>didFinishLaunchingWithOptions</strong> 中执行以下操作:</p>

<pre><code>UIStoryboard *sb = ;

FirstView *mvc = ;
SecondView *tvc = ;

NSArray* controllers = , , nil];

// add controllers to a table view
UITabBarController *tb = [ init];
;

;
</code></pre>

<p><strong>addNavigationToViewController</strong> 是我用来在 UINavigationController 中嵌入 ViewController 的方法</p>

<p>当我运行这个应用程序时,<strong>FirstView</strong> 中的 <code>initWithCoder</code> 会被调用两次。我找到了原因,但我不知道如何正确处理。</p>

<p>基本上,FirstView 被初始化一次,因为它是 <em>Initial Scene</em>(属性检查器中有一个复选标记设置 View “是初始 ViewController ”),第二次:</em> p>

<pre><code>FirstView *mvc = ;
</code></pre>

<p>如果我取消选中 <em>Initial Scene</em>,它会提示“可能未设置指定的入口点”。</p>

<p>我做错了什么,但我不知道它是什么。 </p>

<p>任何提示将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在使用 Storyboard的应用程序中,在应用程序启动时,UIKit 在信息列表中查找 <a href="http://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW9" rel="noreferrer noopener nofollow">the UIMainStoryboardFile key</a> .如果设置了 UIKit 引用该 Storyboard并使用 - 创建一个默认的 Root ViewController 以附加到窗口。</p>

<p>UIKit 正在这样做,然后在 -didFinishLaunchingWithOptions: 中,您还创建了 ViewController 的新实例。这就是它被实例化两次的原因。</p>

<p>如果您想完全自定义此过程,并且看起来确实如此,那么您可能不希望 UIKit 代表您执行这些默认操作。您可以简单地从 info.plist 中删除 UIMainStoryboardFile 键,并在覆盖 -didFinishLaunchingWithOptions: 时:</p>

<ol>
<li>创建一个窗口</li>
<li>获取 Storyboard</li>
<li>从 Storyboard 中实例化 ViewController 。</li>
<li>设置窗口的 Root ViewController 。</li>
<li>使窗口键可见。</li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于iphone -Storyboard - initWithCoder 被调用两次,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11285333/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11285333/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - Storyboard - initWithCoder 被调用两次