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]