【问题标题】:Is there a way to stop a segue after prepareForSegue has been called在调用 prepareForSegue 后有没有办法停止 segue
【发布时间】:2017-04-16 19:27:46
【问题描述】:

我正在开发一个应用程序,它使服务器调用获取一个数组并在表格视图中显示它。 该应用程序在一个导航控制器中有两个视图控制器(我们称它们为 VC1 和 VC2),因此 VC1 与 VC2 相连。 VC1 从用户那里获取输入并在 shouldPerformSegueWithIdentifier 中验证输入。 如果有效并且在 prepareForSegue 内部,VC1 使用 destinationVC 调用 VC2 方法,该方法从服务器检索数组并将其显示在表视图中。

现在我面临的问题是返回的数组可能是空的,我最终会显示一个空表。

我可以停止显示空表还是应该在 VC1 中的 shouldPerformSegueWithIdentifier 内部调用服务器并完全停止 segue?我很困惑,因为数组是 VC2 的模型,所以从 VC1 启动服务器调用以检索属于 VC2 模型的数据似乎很奇怪。调用 prepareForSegue 后有没有办法停止 segue?

【问题讨论】:

    标签: ios model-view-controller segue


    【解决方案1】:

    UIKit 在调用prepareForSegue:sender: 之前调用委托方法shouldPerformSegueWithIdentifier:sender: 如果您的数组为空,则从此方法返回NO。

    【讨论】:

    • 感谢@ScottAhten,您的回答。但我的问题是(重新表述):要从 shouldPerformSegueWithIdentifier:sender 返回 false:我必须在 VC1 中启动服务器调用并填充属于 VC2 的数据。我这样做是不是违反了 MVC 模式?
    • VC1 需要知道是否有数据要呈现。同时检索实际数据可减少您需要进行的网络调用次数。模型由 VC1 检索并传递给 VC2 进行显示。所以,我会说,“不”。这不违反 MVC。
    • 感谢@ScottAthen。这似乎是最合理的方式。
    猜你喜欢
    • 1970-01-01
    • 2012-12-28
    • 2011-12-25
    • 2013-12-25
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多