ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法
<p><p>我定义了一个类<code>NewViewController</code>,它显示了一个在应用程序中添加新项目的屏幕,它被包装在一个<code>UINavigationController</code> 中。我想在这个 <code>UIViewController</code> 上设置一个 <code>delegate</code>,我目前在 <code>prepareForSegue</code> 方法中这样做:</p>
<pre><code>UINavigationController *navController = segue.destinationViewController;
NewViewController *newViewController = (NewViewController *)navController.topViewController;
;
</code></pre>
<p>这行得通,但我觉得这并不优雅,也不是我应该这样做的方式。获得此结果的最佳方法是什么?</p>
<p>Edit:<code>NewViewController</code>中的<code>delegate</code>在<code>NewViewController</code>中的所有字段都填写完毕并提交后调用。目前,这是唯一来自 <code>NewViewController</code> 的 <code>delegated</code>。以模态方式显示 <code>NewViewController</code> 的 <code>UIViewController</code> 是设置为 <code>delegate</code> 的内容(在本例中为 self)。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我认为这种方法很好,尽管您可能需要进行更多的错误检查以防万一。如果这是一个命名的 segue,您可以检查 <code>segue.identifier</code> 以确保这是您期望的 ViewController 。我也会像这样检查类(class):</p>
<pre><code>if (])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
if (])
{
NewViewController *newViewController = (NewViewController *)navController.topViewController;
;
}
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/20741619/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/20741619/
</a>
</p>
页:
[1]