菜鸟教程小白 发表于 2022-12-12 15:45:42

iphone - 没有从另一个 View Controller 调用委托(delegate),尝试了一切


                                            <p><p>我有 2 个 ViewController ,它们之间有一个 segue。我的主视图 Controller 称为 <code>ViewController</code>。在我的第二个名为 <code>PreferencesViewController</code> 的 ViewController 中,我有一个按钮,它必须更改我的主视图 Controller 中的一些值。但它没有......</p>

<p>我已经在我的 <code>PreferencesViewController.h</code> 中设置了一个委托(delegate)协议(protocol),就像我在 Stack Overflow 上的一些示例中看到的一样(是的,我用谷歌搜索过它;))。 </p>

<p>我还将 <code>PreferencesViewController.h</code> 文件导入到我的主 ViewController 中,同时我告诉 viewcontroller 是委托(delegate):<code><PreferencesViewControllerDelegate></code></p>

<p>我还在主 ViewController 的实现中实现了该方法。但是当我按下按钮时,这个方法不会被调用。我在 IBAction 中实现了 <code>;</code></p>

<p>我已经阅读了很多关于设置委托(delegate)的内容。我需要在哪里执行此操作?我需要创建和分配/初始化我的 <code>PreferenceViewController</code> 的实例吗?我试过这个,然后告诉实例 <code>instance.delegate = self</code> 但这也没有用......</p>

<p>希望有人能帮帮我!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您是正确的,您需要设置委托(delegate)。使用 segue 时最容易做到这一点的地方是在源 ViewController (本例中为 <code>ViewController</code>)中使用 <code>prepareForSegue:sender:</code> 方法。传递给此方法的 segue 对象具有对目标 ViewController 的引用;你可能想做这样的事情:</p>

<pre><code>- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if () {
      PreferencesViewController *preferencesViewController =
segue.destinationViewController;
      preferencesViewController.delegate = self;
    }
}
</code></pre>

<p>由于您使用的是 segue,系统正在为您执行新 ViewController 的分配/初始化;系统调用此方法让您在新 ViewController 显示之前对其进行任何连接。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 没有从另一个 ViewController 调用委托(delegate),尝试了一切,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19478591/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19478591/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 没有从另一个 View Controller 调用委托(delegate),尝试了一切