菜鸟教程小白 发表于 2022-12-13 07:59:15

ios - 多次使用同一个 View Controller


                                            <p><p>我是 Objective-C 的新手,有一个问题。多次搜索,但我找不到我要找的东西。</p>

<p>我正在为这个应用程序使用 Storyboard。在主屏幕上,您有一些带有标签的按钮。这些标签应该说明一个数字。按下按钮时,您将转到一个新的 viewController,您已在其中输入(在“保存”之后)返回主屏幕并使用正确的数字更新标签。 <strong>一个按钮</strong>的所有功能都很棒,我对此感到非常高兴。 </p>

<p>问题是:</p>

<p><strong>1.</strong> 因为我有多个带有标签的按钮,所以我想使用同一个 viewController 来一遍又一遍地提供输入。我尝试连接每个按钮以在标识符“AddData”下滑动到 viewController,但 Xcode 不允许在 Storyboard 中使用相同的标识符两次或更多。所以我需要别的东西。有什么想法吗?</p>

<p><strong>2.</strong>目前我使用以下代码将数据带回主屏幕:</p>

<p>homeScreenViewController</p>

<pre><code>- (IBAction)unwindToHomeScreen:(UIStoryboardSegue *)segue;
{
    inputDataViewController *source = ;
    self.logoOneLabel.text = source.endTotalNumber;
}
</code></pre>

<p>输入数据 ViewController :</p>

<pre><code>- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if (sender != self.saveButton) {
      return;
    } else {
      if (endTotalLabelNumber &gt; 0) {
            self.endTotalNumber = ;
      } else if (endTotalLabelNumber == 0 &amp;&amp; totalLabelNumber == 0){
            self.endTotalNumber = 0;
      } else {
            self.endTotalNumber = ;
      }

    }
}
</code></pre>

<p>这对一个按钮很有效,但是如何与多个按钮一起使用呢?我听说 Delegates 多次使用同一个 viewController 并将数据返回到不同的地方,但我就是不明白。有什么帮助吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你不应该需要委托(delegate)。</p>

<p>您需要的是 ViewController 上处理输入的属性,它知道它正在为哪个按钮处理输入。</p>

<p>当您转到输入 Controller 时,根据按下的按钮设置此属性。当您放松时,获取此属性以了解要修改的标签。</p>

<p>例如,在输入 ViewController 的 <code>.h</code> 文件中,添加如下属性:</p>

<pre><code>@property (nonatomic,assign) NSInteger handlingTag;
</code></pre>

<p>或者什么,任何对你有意义的名字。</p>

<p>现在您需要实现主屏幕 ViewController 的 <code>prepareForSegue:sender:</code>。</p>

<p>使用 <code>sender</code> 参数来确定按下了哪个按钮,并在此基础上根据按钮设置输入 ViewController 的新 <code>handlingTag</code> 属性当我们放松时会知道如何处理它。</p>

<p>现在在 unwind 方法中:</p>

<pre><code>switch (source.handlingTag)
</code></pre>

<p>根据源的<code>handlingTag</code>属性创建一个开关结构,并根据这个值设置合适的标签。</p>

<hr/>

<p>正如 Jeff 在评论中指出的那样,在这里定义一个 <code>NS_ENUM</code> 用于属性而不是 <code>NSInteger</code> 是一个非常好的主意。 <code>NS_ENUM</code> 将允许您命名正在使用的值。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 多次使用同一个 ViewController ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23979917/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23979917/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 多次使用同一个 View Controller