- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
设置:我设置了一个 Storyboard,有两个简单的 View Controller A 和 B。A 中有一个按钮,它通过模态 segue 转换到 B。 B 在 A 之上呈现模态转换。这很好。
问题:有没有办法用一些简单的 Storyboard魔法让 B 离开并回到 A?
请注意,如果这一切都在导航 Controller 中,并且我使用了推送转场,则导航 Controller 将隐式处理它。会有一个“返回”按钮。没有可比的模态,我需要自己构建 UI,这很好,但我想知道是否有一个 segue 机制我可以用来发出从 B 到 A 的信号。
现在从 B 到 A 的 oldskool 构建方法是:
最佳答案
在不编写至少一点代码的情况下关闭模态视图 Controller 没有任何 Storyboard魔法。
但是,虽然您确实必须实现一些自己的代码,但您不一定要那么麻烦。您可以在 View Controller B 中有一个调用 [self dismissViewControllerAnimated:YES completion:nil]
的按钮. (文档说呈现 View Controller 应该被解雇,但他们还说,如果在被呈现者上调用消息,消息将被转发到呈现 View Controller 。如果你想更明确地说明它 - 而且你在某些情况下需要这样做,例如当一个模态视图 Controller 从另一个模态视图 Controller 呈现时——您可以使用 self.presentingViewController
显式引用演示者并从那里调用 dismiss...
。)
您会在某些应用程序中看到委托(delegate)业务,因为它是通知 View Controller A 用户在 View Controller B 中所做的任何事情的一种方式......但这不是唯一的方式。在使用 self.presentingViewController
引用 A 之后,有 KVO、通知或只是简单地调用 A 的方法(假设 B 知道它总是由 A 呈现)。如果 A 不需要知道 B 中发生了什么(例如,因为用户点击了取消按钮),则无需执行任何操作——您只需关闭模式并完成它即可。
在 iOS 6 及更高版本中,展开转场添加了另一个选项,提供了一点“ Storyboard魔法”来解除模态视图 Controller (或以其他方式“退出”一系列转场)。但是这种方法仍然需要一些代码——你不能完全在 Storyboard中设置它。不过,从好的方面来说,该代码提供了一条从被关闭的 View Controller (B) 到呈现它的 View Controller (A) 获取信息的路径。
苹果有a tech note about unwind segues详细介绍了它们,但这是简短的版本:
IBAction
您想要展开的 View Controller 类上的方法 - 呈现模态视图 Controller 的类,而不是模态视图 Controller 本身(您的问题中的 View Controller A)。不同于普通 IBAction
方法,这些应该采用 UIStoryboardSegue *
类型的参数;例如- (IBAction)unwindToMainMenu:(UIStoryboardSegue*)sender
sourceViewController
从被关闭的 View Controller 中检索信息。您无需调用dismissViewControllerAnimated:completion:
因为 segue 处理关闭即将消失的 View Controller 。 关于cocoa-touch - 如何关闭在 UIStoryboard 中呈现的模态框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9732499/
想要在两个 UIStoryBoard 和不同的 UIViewController 之间导航。我的问题是,当我点击 UIButton 时,控件应该从当前 UIStoryBoard 转移到 UIViewC
我有一个 iOS 应用程序,它使用 UIStoryboard 来控制其流程。我希望在 UIStoryboard 中定义我的所有 View 以共享一个共同的背景。有没有一种方法可以做到这一点,而不必为每
我有两个相关的小问题,我认为第二个是因为第一个。 第一个是我的应用程序中有几个 UIButton,但没有文本,只有背景图像。 这些图像已本地化为 6 种语言。 问题是,在 Storyboard中编辑
我使用本教程来实现我的自定义 UITabBarController:link 但我使用的是 Storyboard而不是 xibs。所以一些方法使用下面的代码: NSArray *nibObjects
我有一个主容器 Controller ,用于初始化 subview Controller 。 我正在尝试学习使用 UIStoryboards,但我对如何摆脱 Storyboard感到困惑。 流程如下:
我正在像这样用 MainStoryBoard 编写程序。我有带有 5 个选项卡的 UITabBarController。在每个uiviewcontroller的viewdidload中,我是这样设置的
我正在尝试快速创建 Storyboard扩展,以便更安全地实例化 View Controller protocol IdentifierType { typealias Identifier
有没有一种简单的方法可以在 Storyboard中截取场景/uiviewcontroller 的屏幕截图?我知道您可以从模拟器截取屏幕截图,但我想从 Storyboard中截取图片并将图片发布到 st
将 Controller 添加到 Storyboard时,它们会随机显示在 Storyboard侧边栏列表中。有没有办法将 Controller 重新排序为首选顺序? 这是问题的截图: 最佳答案 我建
我在我的应用程序中使用 UISegue 在我的应用程序中的 View Controller 之间自动转换。我称它们为 A 和 B。 它按预期工作,但是当我想从 B 返回 A 时,我尝试调用[self.
我有一个 AnimalViewController。它是一个基本 View Controller 。我在 UIStoryBoard 中也有 AnimalViewController 场景。 我有一个关
如何识别 UIStoryboard? 该类具有创建和实例化的方法,但我没有看到带有类似name 的@property。例如 获取 Storyboard对象 + storyboardWithName:b
我有这行代码: [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)]; 和 Storyboard文件。我实际上在哪里插入
使用 Storyboard一段时间后,我发现它们非常有用,但是它们确实有一些限制,或者至少是不自然的做事方式。虽然看起来应该为您的应用程序使用单个 Storyboard,但当您获得一个中等大小的应用程
我想知道是否可以在 Storyboard 中分配“动态”颜色。 从 iOS7 开始,您可以使用 tintColor 并通过 keyWindow 的 tintColor 以编程方式更改它。但是我找不到一
我已经使用 Xcode 4.5 开发了应用程序。并在此应用程序中使用 UIStoryboard。 在这个应用程序中,我从一个 ViewController 推送到第二个 ViewController,
我有这段代码,每次我使用它时,目标 View 的 viewDidLoad 都会被调用两次。 为什么会这样? Destination *myDestination = [self.storyboard
我有一个名为 BaseController 的基本 UIViewController,它是通过我的 storyboard 中的 segue 调用的。现在我有这个 baseController 的两个子
AppDelegate 基本上是 UIApplication 的委托(delegate),意味着它将处理应用级别的东西。 但是对于 storyboard appdelegate 无法正常工作,如图所示
我在一个国际化的 Xcode 项目中工作,它有两个 UIStoryboard 文件 en.lproj/Main.storyboard 和 nl.lproj/Main.storyboard。 这样做的结
我是一名优秀的程序员,十分优秀!