菜鸟教程小白 发表于 2022-12-12 16:13:53

ios - Obj-C 以编程方式更改 ViewController(两个 Storyboard)


                                            <p><p>首先,我想强调一下,这段代码可以运行,但看起来很糟糕。我需要以编程方式更改 ViewController (不能使用 segue),所以我使用以下代码:</p>

<pre><code>NSString *storyboardName = @&#34;Main&#34;;
UIStoryboard *storyboard =
    ;
PurchaseViewController *vc = [storyboard
      instantiateViewControllerWithIdentifier:@&#34;PurchaseViewController&#34;];
;
</code></pre>

<p>显然它的工作原理。不幸的是,在创建第二个 Storyboard(iPad)后,我被迫将此代码更改为:</p>

<pre><code>#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad

/*
   ...
*/

NSString *storyboardName;
if (IDIOM == IPAD)
    storyboardName = @&#34;Main_iPad&#34;;
else
    storyboardName = @&#34;Main&#34;;
UIStoryboard *storyboard =
;
PurchaseViewController *vc = [storyboard
                              instantiateViewControllerWithIdentifier:@&#34;PurchaseViewController&#34;];
;
</code></pre>

<p>它一定是比这更好的解决方案,但我没有找到。你知道替代(更好的)解决方案吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p> <a href="/image/jivqK.png" rel="noreferrer noopener nofollow"><img src="/image/jivqK.png" alt="enter image description here"/></a> </p>

<p> <a href="/image/fp2Xh.png" rel="noreferrer noopener nofollow"><img src="/image/fp2Xh.png" alt=""/></a> </p>

<p>保持您的 iPadStoryboard名称与 iPhone 相同,只需在 '.storyboard' 之前附加 '~ipad' 并在 info.plist 中添加 'Main storyboard file base name (iPad)' 并将 Storyboard 名称作为值。然后使用下面的代码根据设备获取 Storyboard名称。 </p>

<pre><code>NSBundle *bundle = ;
    NSString *storyboardName = ;
    UIStoryboard *mainStoryboard = ;
</code></pre>

<p>希望这会有所帮助。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Obj-C 以编程方式更改 ViewController(两个 Storyboard),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/32393755/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/32393755/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Obj-C 以编程方式更改 ViewController(两个 Storyboard)