【问题标题】:UIStoryboard popViewControllerUIStoryboard popViewController
【发布时间】:2012-02-11 19:29:47
【问题描述】:

我在我的应用程序中使用 UISegue 在我的应用程序中的视图控制器之间自动转换。我称他们为 A 和 B。

它按预期工作,但是当我想从 B 弹回 A 时,我尝试调用 [self.navigationController popViewController] 但是 B 的 navigationController 属性报告为 null。


作为第二次尝试,我尝试将按钮映射到 UISegue,然后返回视图控制器 A。
然而,这只是创建了一个新的 ViewController。

作为一种变通方法,我最终的变通方法是从 UIStoryboard 中检索 B viewcontroller 并调用 [A.navigationController pushViewController:B]

此时,调用[B.navigationController popViewController] 按预期工作。

这似乎是错误的,从情节提要中我如何才能返回到以前的视图控制器?

【问题讨论】:

    标签: ios uiviewcontroller ios5 uistoryboard


    【解决方案1】:

    我不知道您的 A 和 B 控制器的类(无论是 UIViewController、UITableViewController 还是 UINavigationController),但如果您遵循以下模式,它应该可以工作。

    • 在一个空的情节提要中,插入一个 UINavigationController。这将在情节提要中引入两个窗口,并用箭头(segue)链接。右边应该是控制器A。

    • 假设您在 A 中添加了一个按钮。该按钮会将 B 推入导航堆栈。

    • 然后,添加第二个控制器 B,从控制器 A 中的按钮拖动到控制器 B,然后从弹出的菜单中选择“push”。

    如果只使用 UIViewController (A) 并推送 B,则没有 navigationController 可以处理弹出。

    希望有所帮助。

    【讨论】:

    • 如果您已经有一个 UIViewController,则无需拖入 UINavigationController 并搞乱设置它。而是选择 UIViewController 并转到 Editor 菜单并选择 Embed In 并选择 UINavigationViewController 这将为您设置所有内容。
    • @斯科特舍伍德。这是一个不错的技巧。我不知道。但是一个问题。当我在故事板中这样做时,Xcode 会自动将我的 viewController 变成一个 navController 和一个 viewController,并与 segue 链接。那么它基本上不是一样的吗?
    • 是的,它完全一样,只是有点捷径。 navController 和 viewController 之间的链接称为关系,与 Segue 略有不同,但原则上你剩下的和你建议的一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多