菜鸟教程小白 发表于 2022-12-12 23:45:05

iOS:以编程方式将 Segue 推送到多个 View Controller


                                            <p><p>我有 <strong>一个</strong> 原始 ViewController 和 <strong>四个</strong> 目标 ViewController 。我希望能够 <strong>push</strong> 使用导航 Controller 将原始 ViewController<em>ALL</em> 转移到目标 ViewController 。我试过了……</p>

<pre><code>- (IBAction)notificationsButtonPushed:(id)sender {

    NotificationsViewController *notifications = [init];

    ;

}

- (IBAction)messagesButtonPushed:(id)sender {

    MessagesViewController *messages = [ init];

    ;

}

- (IBAction)settingsButtonPushed:(id)sender {

      if (canMessage) {

          SettingsViewController *settings = [init];

          ;
      }

      else {

          NSLog(@&#34;Can&#39;t Message&#34;);
      }

}

- (IBAction)previewButtonPushed:(id)sender {

    PreviewViewController *preview = [init];

    ;

}
</code></pre>

<p>这只是给了我一个没有 UI 组件的空 ViewController 。 </p>

<p><strong>注意</strong>:我也厌倦了“initWithNidName:”并传入了每个目标 ViewController 的storyboardID,它给了我错误:</p>

<pre><code>&#39;Could not load NIB in bundle: &#39;NSBundle &lt;/var/mobile/Applications/B7E025E5-D7D2-4FFD-B49C-E10DF5E94C44/LifePoints.app&gt; (loaded)&#39; with name &#39;preview&#39;
</code></pre>

<p>我也尝试过...( Storyboard segues 设置为“Push”)</p>

<pre><code>    - (IBAction)notificationsButtonPushed:(id)sender {

    ;

}

- (IBAction)messagesButtonPushed:(id)sender {

    if (canMessage) {

      ;

    }

    else {
      NSLog(@&#34;Can&#39;t Message&#34;);
    }
}

- (IBAction)settingsButtonPushed:(id)sender {

    ;

}

- (IBAction)previewButtonPushed:(id)sender {

    ;

}
</code></pre>

<p>虽然这确实将目标 ViewController 以适当的转场类型推送到屏幕上,但它确实<strong>不</strong>转场到正确的目标 ViewController 。它似乎只延续到最后一个附加的 Storyboardsegue。</p>

<p>有谁知道如何正确应用它并让它以我正在寻找的形式表现?</p>

<p><strong>编辑</strong></p>

<p>请务必注意,我正在检查“messagesButtonPushed”方法是否满足条件。我正在检查是否允许用户发送消息,如果允许,则转到 VC。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不需要任何代码来实现基本的转场。 </p>

<p>在您的 Storyboard中,确保您的原始 ViewController 嵌入在导航 Controller 中(选择原始 View 并选择编辑->嵌入->导航 Controller )。</p>

<p>然后,您可以简单地控制从四个按钮中的每个按钮拖动到相应的目标 View ,选择“push”作为 segue 类型。然后,您可以单击两个 View 之间的 segue 图标,为每个 segue 指定一个标识符。</p>

<p>您可以删除您的 IBAction 方法以及链接到它们的按钮上的任何操作。</p>

<p>我建议你填写 <a href="http://www.raywenderlich.com/50308/storyboards-tutorial-in-ios-7-part-1" rel="noreferrer noopener nofollow">Storyboard Tutorial</a>了解 Storyboard和转场的工作原理。</p>

<p>如果您确实想以编程方式执行 segue,则可以控制从 View 底部的黄色 ViewController 图标拖动到目的地。然后,您可以根据您的第二个代码使用 <code>performSegueWithIdentifier</code> 调用 segue - 在您的情况下,您可能有两个不同的 segue 并根据购买状态触发商店 segue 或另一个</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS:以编程方式将 Segue 推送到多个 ViewController ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24581450/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24581450/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS:以编程方式将 Segue 推送到多个 View Controller